将 column/variable 作为二进制值传递给转换函数

Passing column/variable as binary value to convert function

我正在处理一个大值,其中包含用 ASCII 行和列分隔符分隔的行和列值。结果是我在 SQL table 中插入的表格数据。

理解想法的简单示例:

George|20;Ivan|15;Peter|10;

转换为:

George 20
Ivan   15
Peter  10

并插入 Users ([name], [age]) table.

在插入之前,使用 TRY_CONVERT 函数将每个值转换为其列类型。问题是这对 VARBINARY 数据没有按预期工作。例如(第二个输出是正确的):

DECLARE @A NVARCHAR(1024) = '0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB';

SELECT TRY_CONVERT(VARBINARY(255), @A) 
-- 0x300078004600450035003200300036003700360042003100410031004400390033004400410042004100420032003300310039004500450041003000330036003700340046003300360033003200450041004500450042003100360033004400310045003800380032003400340046003500450042003100440045003100300045004200

SELECT TRY_CONVERT(VARBINARY(255), 0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB)   
-- 0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB

VARBINARY 数据作为字符串传递时,字符串将自身转换为 VARBINARY。我需要传递不带引号的数据,但是当传递 column/variable 类型的字符串时如何做到这一点?

我需要使用 TRY_CONVERT 函数的 style 选项。

DECLARE @A NVARCHAR(1024) = '0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB';

-- using style option 1
SELECT TRY_CONVERT(VARBINARY(255), @A, 1) 
SELECT TRY_CONVERT(VARBINARY(255), 0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB)