替换不工作!

时间:2010-10-19 22:39:30

标签: sql sql-server-2005 tsql sql-server-2008

我的列值包含错误的字符?。现在我想将其更改为字符b。为此,我使用这个声明:

SELECT REPLACE(name,'?','b') from contacts;

但是当我这样做时,没有发生任何事情,它会以?返回值。

我做错了什么?我怎么能取代这个?

4 个答案:

答案 0 :(得分:4)

您是否真的想更改表格中的值?在这种情况下,您需要执行UPDATE

UPDATE contacts
SET name = Replace(name,'?','b')

否则,如果您只是尝试检索修改后的值,那么您的语法应该可以正常工作。 (我测试了它,?不必转义或其他任何内容):

SELECT name, Replace(name,'?','b') as Fixed
FROM contacts

答案 1 :(得分:4)

我之前见过的另一种可能性是角色看起来像一个普通的旧ASCII问号,但事实并非如此。它实际上是一个不同的角色。我选择文本并将其粘贴到记事本中,然后将其复制并粘贴到我的查询中。

答案 2 :(得分:1)

如果名称列数据类型为NVARCHAR,则应使用N前缀。 NVARCHARVARCHAR类型具有unicode差异。请查看this链接,详细了解NVARCHARVARCHAR类型之间的差异。

SELECT REPLACE(name,N'?', N'b') from contacts;

答案 3 :(得分:0)

试试这个

update contacts set name=replace(name, '?', 'b')