在SQL Server中,替换字符(0),空字符,嵌入在一个字符串,它的十六进制代码(In SQL

2019-09-17 22:23发布

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

 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)。

Answer 1:

你想要什么可能是这一点。

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)))


文章来源: In SQL Server, replace a Char(0), the null character, embedded in a string with its hex code