T-SQL中,字符串删除空间(T-SQL, Remove space in string)

2019-08-02 06:47发布

我在SQL两个字符串替换功能仅适用于其中的一个,这是为什么?

实施例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' 。

Answer 1:

测试通过以下方式。

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

如果代码返回32,则这是一个空间,如果不是,这是一个不同的Unicode字符和您的替换“”将无法正常工作。



Answer 2:

也许需要转换。

UPD:或没有(在SQL 2005年工作正常,太)



Answer 3:

你确定这是一个空间? 即要传递的第二个参数相同的空白字符? 你已经发布的代码工作正常,我的SQL Server 2008上。

重新工作你的朋友的电脑上 - 也许,当你把它交给他的空白得到了标准化?



Answer 4:

您可能正在使用的非易碎空间。

我可以通过键入重现ALT+0160成数SELECT REPLACE('18 286.74', ' ', '')

能否请您发出此以下几点:

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

通过复制'18 286.74'REPLACECAST



Answer 5:

我也有同样的问题,并认为这是一个char(10)(换行)。 当复制出枭雄工作室成为一个char(32),但在记录这是一个char(10)尽量

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


文章来源: T-SQL, Remove space in string
标签: tsql replace