我的列值包含错误的字符?
。现在我想将其更改为字符b
。为此,我使用这个声明:
SELECT REPLACE(name,'?','b') from contacts;
但是当我这样做时,没有发生任何事情,它会以?
返回值。
我做错了什么?我怎么能取代这个?
答案 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
前缀。 NVARCHAR
和VARCHAR
类型具有unicode差异。请查看this链接,详细了解NVARCHAR
和VARCHAR
类型之间的差异。
SELECT REPLACE(name,N'?', N'b') from contacts;
答案 3 :(得分:0)
试试这个
update contacts set name=replace(name, '?', 'b')