显示字符串的十六进制转储

10
有没有办法在 SQL Server 中获得字符串的十六进制转储?这对于解决字符集和排序问题很有用。在 MySQL 中,您可以执行 SELECT HEX('€uro'),在 Oracle 中,您可以执行 SELECT DUMP('€uro') FROM DUAL
1个回答

28
SELECT CAST('€uro' AS VARBINARY(4))
返回
  0x8075726F

在我的默认排序中。

编辑。 刚刚注意到 Unicode 标签。

SELECT CAST(N'€uro' AS VARBINARY(8))

返回

 0xAC20750072006F00

1
太好了!你知道字节顺序取决于什么吗?挑剔一点,我更喜欢20AC而不是AC20,但无论如何,我想确保期望的顺序。 - Álvaro González
@Álvaro - 不好意思,我不知道那个问题的答案。 - Martin Smith
1
@Álvaro:这有点邪恶,我想对于使用高平面Unicode字形的字符串可能会失败,但它似乎符合您的字节顺序要求:SELECT SUBSTRING(CAST(CAST(0xFEFF + SUBSTRING(CAST(CAST(@v as XML) as VARBINARY(MAX)),3,DATALENGTH(CAST(@v as XML))-2) AS XML) AS VARBINARY(MAX)),3,DATALENGTH(CAST(@v as XML))-2) - Steve Kass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接