2014-11-03 85 views
1

我试过选择REPLACE(' this is a user name', ' ', ''),它给了我'thisisausername'这应该是。REPLACE不能在sql表列上工作

我的问题是,当我尝试使用REPLACE选择表列时,它不起作用!

我的查询:

SELECT REPLACE(UserName, ' ', '') as UserName FROM MY_TABLE 

它仍然给我名用空格!我在做一些愚蠢的事情吗?

+0

什么是列数据类型? – haim770 2014-11-03 17:23:19

+0

您使用的数据库是?这对我使用MS SQL很好,假设用户名是varchar(n)。 – jpw 2014-11-03 17:24:29

+0

也许他们是非标准的unicode空格或制表符,看看'unicode(substring(fld,X,1))'返回哪里X是空间的位置 – 2014-11-03 17:24:36

回答

5

@AlexK。这是160unicode(left(field, 1))

160是Unicode NO-BREAK SPACE所以这就是你所需要的更换:

replace(UserName, char(160), '') 

你可以更新一切与一个空白' '更换char(160),然后只用你的原始查询中未来(也许还要确保将来不能输入这些值)