2017-10-12 54 views
0

我想从我的价值/字符串这个角色"删除,但这里用我的UPDATE发言中,我无法将其删除:SQL服务器:删除字符“

UPDATE dbo].[Tablename] 
SET [columnname] = REPLACE([columnname], '"', '') 

你有任何想法如何删除这个人物?

感谢您的意见

+0

你会得到什么样的错误? – lad2025

+7

除了错过[在dbo前面,这应该工作 –

+0

'REPLACE([columnname],U&'\ 0022','')'? – jarlh

回答

0

你可以简单地使用ASCII字符代码来替换通配符。可能有其他很好的解决方案,以及它为我工作!

UPDATE dbo].[Tablename] SET [columnname] = REPLACE([columnname], char(47), '')

char(47)是正斜杠的ASCII码。你可以找到完整的列表here

+0

它不见了,当我打电话回来select * from tablename – Tester

+0

你是否正在更新?你是从不同的数据库中选择克隆的结果吗? (更新1环境选择从另一个?) – xQbert

+0

@xQbert只是更新捷克_CI_AS标准表 – Tester

0

所以首先让你100%确定要消除的角色。 只是因为它看起来像一个双引号,并不意味着它是。

修改下面代码中的注释行,从数据集中选择单个记录。 它会为源字符串中的每个字符吐出charcode。 (obv变更表和字段名称也!)

declare 
    @sample nvarchar(max), 
    @char nvarchar(1), 
    @i_idx int, 
    @temp int 

    create table #RtnValue(
    Id int identity(1,1), 
    A nvarchar(max), 
    [uni] int, 
    [ascii] int 
    ) 

    -- set @sample to a single value from your dataset here 
    select @sample = (select top (1) [sample] from test.test) 


While len(@sample) > 0 
Begin 
    Set @char = left(@sample,1) 
     Insert Into #RtnValue (A, uni, [ascii]) 
     Select A = @char, UNI = UNICODE(@char), [ASCII] = ASCII(@char) 
    Set @sample = RIGHT(@sample,len(@sample)-1) 
End 

Select * from #RtnValue 
+0

它的超过1百万的值。 – Tester

+1

我只是建议你找到一个包含目标字符的记录,对这个字符串进行字符代码分析。我说因为双引号有不同的变化,并且取决于字体和屏幕 - 它们可以看起来很像。 – SimonB

+0

例如,选择CHAR(34)select CHAR(147) – SimonB