我在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' 。
测试通过以下方式。
select unicode(substring('18 286.74', 3, 1))
如果代码返回32,则这是一个空间,如果不是,这是一个不同的Unicode字符和您的替换“”将无法正常工作。
也许需要转换。
UPD:或没有(在SQL 2005年工作正常,太)
你确定这是一个空间? 即要传递的第二个参数相同的空白字符? 你已经发布的代码工作正常,我的SQL Server 2008上。
重新工作你的朋友的电脑上 - 也许,当你把它交给他的空白得到了标准化?
您可能正在使用的非易碎空间。
我可以通过键入重现ALT+0160
成数SELECT REPLACE('18 286.74', ' ', '')
能否请您发出此以下几点:
SELECT CAST('18 286.74' AS BINARY), REPLACE('18 286.74', ' ', '')
通过复制'18 286.74'
从REPLACE
成CAST
?
我也有同样的问题,并认为这是一个char(10)(换行)。 当复制出枭雄工作室成为一个char(32),但在记录这是一个char(10)尽量
Select Replace(@string, char(13), '')