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’时,只需添加一个Collate子句就可以使它工作,就像上面提到的问题的答案一样,但我找不到适用于完整表达式的版本(然后可以用于所有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)))