4

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

IE

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

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

这个问题有解释问题是排序规则的答案。

这个答案显示master.dbo.fn_varbintohexstr(0)将返回0x00000000

当我手动将内部简化Replace为 时'0x00',只需添加一个Collate子句就可以让它工作,就像上面建议的问题的答案一样,但是我找不到适用于完整表达式的版本(然后可以用于所有 n , 0 到 31,跳过 9、10 和 13)。

4

1 回答 1

2

What you want might be this.

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

You need to convert it explicitly to VARCHAR

and if you want the full expression remove inner replace

SELECT REPLACE('t'+Char(0)+'t', Char(0), CONVERT(VARCHAR(10),master.dbo.fn_varbintohexstr(0)))
于 2012-06-10T05:31:51.650 回答