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

Tsql T-SQL,删除字符串中的空格,tsql,replace,Tsql,Replace,我在SQL中有两个字符串,REPLACE函数只对其中一个起作用,这是为什么 例1: SELECT REPLACE('18 286.74', ' ', '') 例2: SELECT REPLACE('z z', ' ', '') 示例1的输出仍然是“18286.74”,而示例2的输出是“zz”。为什么SQL对两个字符串的反应不一样 更新: 运行时,选择“替换”('123 123.12',''),该选项工作正常,但与'18 286.74'仍不兼容。可能需要强制转换 UPD:或者不是(在sql 2

我在SQL中有两个字符串,REPLACE函数只对其中一个起作用,这是为什么

例1:

SELECT REPLACE('18 286.74', ' ', '')
例2:

SELECT REPLACE('z z', ' ', '')
示例1的输出仍然是“18286.74”,而示例2的输出是“zz”。为什么SQL对两个字符串的反应不一样

更新:

运行
时,选择“替换”('123 123.12','')
,该选项工作正常,但与'18 286.74'仍不兼容。

可能需要强制转换


UPD:或者不是(在sql 2005上也可以)

您确定它是一个空格吗?i、 e.作为第二个参数传递的相同的空白字符?您发布的代码在SQLServer2008上对我来说运行良好


你在朋友的电脑上工作-当你给他发送时,可能空白已经正常化了?

你可能正在使用不可破坏的空间

我可以通过在
SELECT REPLACE('18 286.74','','','')中的数字中键入
ALT+0160
来复制它

请发布以下信息:

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

通过将
'18 286.74'
REPLACE
复制到
CAST

以以下方式进行测试

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

如果代码返回32,则它是一个空格,如果不是,则它是另一个Unicode字符,替换“”将不起作用。

我遇到了相同的问题,发现它是一个字符(10)(换行符)。当从管理工作室复制出来时,它变成了一个字符(32),但在记录中它是一个字符(10)


这也适用于同事的pc,我们对同一个数据库服务器运行查询这也适用于SQL Server 2008。将varchar转换为varchar,我对此表示怀疑,但我会尝试。在不中断的情况下,您始终可以执行替换('18 286.74',CHAR(160),'')spaces@Jabezz这个unicode测试特性真的很酷!在诊断我的神秘角色时真的很有帮助:)
Select Replace(@string, char(13), '')