我有带引号的记录,我想用''代替。
示例:
"ASKHELLO"SE --> ASKHELLO SE
""HELLO""1 --> HELLO 1
如何在SQL Server中执行此操作?
我知道替换功能,但是如何让模式检查是否为""
以外的任何字符。
UPDATE
wordname
SET
wordname = REPLACE(deal, '"'+ '%', '')
这是不正确的。请帮忙。
答案 0 :(得分:1)
我根据您对原始答案的双倍空格的评论添加了另一个答案。在这种情况下ID是任意的,但我总是拥有某种主键的粉丝。我们再次见面的XML!
--Setup the Table
DECLARE @T TABLE (wordname VARCHAR(25))
INSERT INTO @T VALUES ('"ASKHELLO"SE'),('""HELLO""1')
SELECT * FROM @T
--DECLARE AND SET XML REPLACING " with spaces
DECLARE @XML XML =
(
SELECT ROW_NUMBER() OVER (ORDER BY wordname ASC) AS "@ID",
CONVERT(XML,'<PART>' + REPLACE(CAST(CAST(REPLACE(wordname, '"',' ') AS VARCHAR(25)) AS VARCHAR(max)),' ',' </PART><PART>') + '</PART>') AS Word
FROM @T AS T
FOR XML PATH('Node'), ROOT('Nodes'), ELEMENTS, TYPE
)
SELECT @XML
--SHRED THE XML (WHICH WILL REMOVE NULLS) AND TRIM
;WITH
SHRED AS
(
SELECT ID = FieldAlias.value('(@ID)[1]','INT'),
WordName = FieldAlias.value('(Word)[1]','varchar(max)')
FROM @XML.nodes('/Nodes/Node') AS TableAlias(FieldAlias)
)
SELECT S.ID,
LTRIM(RTRIM(S.WordName)) AS WordName
FROM Shred AS S
此时更新碎片结果集应该相对微不足道,但如果您需要,请告诉我。将@T替换为原始表以提取数据集。
答案 1 :(得分:0)
REPLACE函数在字符串中执行全局替换。所以你可以做简单的
UPDATE
wordname
SET
deal = REPLACE(deal, '"', '')
假设“wordname”是你的表,“deal”是你要替换的字段。
这将简单地删除双引号。如果您需要使用空格替换' '
而不是''
答案 2 :(得分:0)
这对你有帮助吗?在更换后尝试使用LTRIM去除前导空格。以下是基于您的代码的简单示例:
DECLARE @T TABLE (wordname VARCHAR(25))
INSERT INTO @T VALUES ('"ASKHELLO"SE'),('""HELLO""1')
SELECT * FROM @T
SELECT LTRIM(REPLACE(wordname, '"',' '))
FROM @T