Can';t使用replace函数删除SQL表上的空白

Can';t使用replace函数删除SQL表上的空白,sql,sql-server,replace,type-conversion,Sql,Sql Server,Replace,Type Conversion,我收到了一个csv文件,其中有一列名为“Amount”,在我的表中应该是货币类型。 我采取的第一步是按原样加载csv文件。因此,我的表使用字符串类型来表示Amount列,因为我知道它在源上不会被格式化为money。由于该列上有一些空格,我无法将NVARCHAR转换为MONEY 以下是初始表结构: CREATE TABLE #TestReplace ( Amount NVARCHAR(100) ) 以下是客户端作为列的值插入的内容的示例: INSERT INTO #TestReplace

我收到了一个csv文件,其中有一列名为“Amount”,在我的表中应该是货币类型。 我采取的第一步是按原样加载csv文件。因此,我的表使用字符串类型来表示Amount列,因为我知道它在源上不会被格式化为money。由于该列上有一些空格,我无法将NVARCHAR转换为MONEY

以下是初始表结构:

CREATE TABLE #TestReplace (
    Amount NVARCHAR(100)
)
以下是客户端作为列的值插入的内容的示例:

INSERT INTO #TestReplace VALUES('2 103.74')
因为该字符串中有一个空格,所以我需要删除它,以便将其转换为MONEY类型

但是,如果我尝试REPLACE-SQL函数,则什么也不会发生。就好像这个值没有改变一样

SELECT REPLACE(Amount, ' ','') FROM #TestReplace
replace命令后的金额仍然为:2 103.74

我是否遗漏了一些无法抓住数字2后面空格的内容?有没有更好的方法来消除这个空间,并将NVARCHAR转换为货币


感谢所有的帮助

您的角色不是空格,但看起来像空格。如果使用的是8位ASCII字符,则可以确定该值使用的是什么:

select ascii(substring(amount, 2, 1))
如果这是一个
nvarchar()
(如您的示例所示):


一旦知道字符是什么,就可以替换它。

要添加到Gordon的答案中,一旦知道整数ASCII/Unicode值,就可以在替换函数中使用CHAR()和NCHAR()函数,如下所示:

--For ASCII:
REPLACE(Amount, CHAR( /*int value*/ ), '')

--For Unicode:
REPLACE(Amount, NCHAR( /*int value*/ ), '')

成功了!谢谢大家!@卡米兰里克。接受问题的答案是一个很好的做法。很好,感谢您将此添加到以前的答案中。非常感谢。
--For ASCII:
REPLACE(Amount, CHAR( /*int value*/ ), '')

--For Unicode:
REPLACE(Amount, NCHAR( /*int value*/ ), '')