我想替换数据库中存在单引号和斜杠的一些数据。
下面这一行就是它在数据库中的显示方式,我只想从记录中删除“f/d”。

('P/P','F/D','DFC','DTP')

一直在使用的变量
UPDATE tablename SET columnname = REPLACE(columnname, '''F/D,''', '')
WHERE RECORDID = XXXXX

也一直在使用
UPDATE tablename SET columnname = REPLACE(columnname, 'F/D,', '')
WHERE RECORDID = XXXXX

似乎这应该是一个简单的解决办法,但我还没有任何运气-所有的建议都是赞赏的。

最佳答案

你的不起作用的原因是你没有包括报价。您正在查找F/D,'F/D,'并且您的数据是'F/D',
如果只是要从所有要删除的值中删除'F/D',则还需要删除逗号和引号。此方法删除'F/D',然后删除任何双逗号(如果'F/D'位于字符串中间)。

declare @var varchar(64) = '(''P/P'',''F/D'',''DFC'',''DTP'')'

select replace(replace(@var,'''F/D''',''),',,',',')

--update tablename
--set columnname = replace(replace(columnname,'''F/D''',''),',,',',')
--where RECORDID = 1324

如果要替换字符串中的第二个元素,可以使用以下方法:
select
        @var
         --find the location of the first comma
        ,charindex(',',@var,0)
        --find the location of the second comma
        ,charindex(',',@var,charindex(',',@var) + 1)
        --Put it all together, using STUFF to replace the values between this range with nothing
        ,stuff(@var,charindex(',',@var,0),charindex(',',@var,charindex(',',@var) + 1) - charindex(',',@var,0),'')

关于sql - 替换功能-在SQL SERVER 2008中处理单引号和正斜杠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51286865/

10-12 03:08