T-SQL,删除字符串中的空格

时间:2009-08-24 12:02:05

标签: tsql replace

我在SQL中有两个字符串,REPLACE函数只适用于其中一个字符串,为什么会这样?

示例1:

SELECT REPLACE('18 286.74', ' ', '')

示例2:

SELECT REPLACE('z z', ' ', '')

示例1的输出仍为“18 286.74”,而示例2的输出为“zz”。为什么SQL对这两个字符串的反应不同?

更新:

运行select replace('123 123.12', ' ', '')时效果正常,但仍未使用'18 286.74'。

5 个答案:

答案 0 :(得分:12)

按以下方式测试。

select unicode(substring('18 286.74', 3, 1))

如果代码返回32,那么它是一个空格,如果没有,则它是一个不同的Unicode字符,你的替换''将不起作用。

答案 1 :(得分:0)

可能需要施放。

UPD:或者不是(在sql 2005上运行正常)

答案 2 :(得分:0)

你确定它是一个空间吗?即您作为第二个参数传递的相同的空白字符?您发布的代码在SQL Server 2008上适合我。

重新研究你的朋友PC - 当你把它发给他时,也许这个空格已经正常化了吗?

答案 3 :(得分:0)

你可能正在使用不易碎的空间。

我可以通过在ALT+0160

中的数字中输入SELECT REPLACE('18 286.74', ' ', '')来重现它

请您发出以下信息:

SELECT CAST('18 286.74' AS BINARY), REPLACE('18 286.74', ' ', '')

'18 286.74'REPLACE复制到CAST

答案 4 :(得分:0)

我遇到了同样的问题,发现它是一个char(10)(换行)。当从Managment Studio复制时它变成了一个char(32),但在记录中它是一个char(10)尝试

Select Replace(@string, char(13), '')