【发布时间】:2021-08-03 04:24:18
【问题描述】:
我所拥有的是一串整数值,它们成对地表示字母和数字。我想用SQL来做'12371 12595 8224'到'S031 '的转换
我已经到了……
CAST(CAST(CAST(SUBSTRING(DataString,1,CHARINDEX(CHAR(9),DataString)-1) as bigint) AS VARBINARY(2)) AS VARCHAR(2)) but that gets me '0S'
注意:CHAR(9) 是因为整数是制表符分隔的。
【问题讨论】:
-
'12371 12595 8224'(也不是你的标题所说的decimal,或者你的代码所暗示的bigint)如何转换为'S032'? -
12371 是 0x3053,十六进制值的整数表示也是如此。所以这是一个十六进制对,编码为整数。 0x30是字符0的十六进制表示。0x53是字符S的十六进制表示。正如我的代码sn-p所示。
-
这并不能解释
'12371 12595 8224' = 'S032'的作用。也不告诉我们您的原始来源价值是什么。 -
所以你的字节顺序被颠倒了,因为 12371 是 0S,正如你所指出的。我将您的期望值设为
S031而不是 S032。 -
哎呀!~!!!我会纠正我最初的问题。谢谢斯图。
标签: sql sql-server sql-server-2012