替换功能-在SQL SERVER 2008中处理单引号和正斜杠

时间:2018-07-11 13:34:22

标签: sql sql-server database sql-server-2008

我想替换数据库中一些带有单引号和斜杠的数据。

下面的行正是它在数据库中的显示方式,我只想从记录中删除'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

似乎应该是一个简单的修复程序,但我还没有碰到任何运气-所有建议都值得赞赏。

2 个答案:

答案 0 :(得分:1)

您的行不通的原因是因为您不包括引号。您正在寻找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),'')  

答案 1 :(得分:0)

如果逗号在正确的位置,则您的第一个版本应该可以正常工作:

org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
null:0
The URI "https://sdp-w8-4:8080/custom/customimages/technicians_citype.png"
on element <image> can't be opened because:
The URI can't be opened:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)

请注意,如果它是值中的第一个或最后一个元素,则不会替换TranscoderInput transcoderInput = new TranscoderInput(processedInputStream); TranscoderOutput transcoderOutput = new TranscoderOutput(resultByteStream); PNGTranscoder pngTranscoder = new PNGTranscoder(); pngTranscoder.addTranscodingHint(ImageTranscoder.KEY_ALTERNATE_STYLESHEET, "/svgrelationshipmap.css"); //no i18n pngTranscoder.addTranscodingHint(ImageTranscoder.KEY_BACKGROUND_COLOR, Color.white); pngTranscoder.transcode(transcoderInput, transcoderOutput); 。如果这是一个问题,我建议您再问一个问题。