sql-server – 在SQL Server中,用其十六进制代码替换字符串中嵌入的字符(0),空字符

SQL Server T-SQL中的构造是什么,它将用其十六进制代码替换嵌入在字符串中的Char(0),null字符?

 REPLACE('t'+Char(0)+'t', Char(0), REPLACE(master.dbo.fn_varbintohexstr(0), '000000', ''))

不返回’t0x00t’,是什么? (这已经适用于1到31)

这个question有答案解释问题是整理.

answer显示master.dbo.fn_varbintohexstr(0)将返回0x00000000.

当我手动简化内部替换为’0x00’时,只需添加一个Collat​​e子句就可以使它工作,就像上面提到的问题的答案一样,但我找不到适用于完整表达式的版本(然后可以用于所有n,0到31,跳过9,10和13).

最佳答案 你想要的可能就是这个.

SELECT REPLACE('t'+Char(0)+'t', Char(0), CONVERT(VARCHAR(10),REPLACE(master.dbo.fn_varbintohexstr(0), '000000', '')))

您需要将其显式转换为VARCHAR

如果你想要完整的表达式删除内部替换

SELECT REPLACE('t'+Char(0)+'t', Char(0), CONVERT(VARCHAR(10),master.dbo.fn_varbintohexstr(0)))
点赞