我需要删除列值中的双引号。例如,我在表格中有一列,其值如下
我需要删除“Inc”附近的双引号& “信任”和列值应类似于以下
我尝试使用REPLACE()函数。但它取代了值中的所有双引号。但我想在值的开头和结尾保留引号。请帮助
答案 0 :(得分:4)
使用“替换”从字符串中删除双引号。然后是Prefix,后缀带双引号。
DECLARE @VAR VARCHAR(50)='"Testing Name ("Inc")"'
CREATE TABLE #TAB (COLUMN_VALUE VARCHAR(50))
INSERT INTO #TAB
SELECT '"Testing Name ("Inc")"'
UNION ALL
SELECT '"Testing, "Trust" ("Inc")"'
现在点击SELECT语句
SELECT COLUMN_VALUE, '"'+REPLACE(COLUMN_VALUE,'"','') +'"' as NEW_COLUMN_VALUE FROM #TAB
结果将是
+----------------------------+------------------------+
| COLUMN_VALUE | NEW_COLUMN_VALUE |
+----------------------------+------------------------+
| "Testing Name ("Inc")" | "Testing Name (Inc)" |
| "Testing, "Trust" ("Inc")" | "Testing, Trust (Inc)" |
+----------------------------+------------------------+
答案 1 :(得分:1)
如果值的开始和结束将始终包含双引号,请尝试以下脚本。
SELECT '"'+REPLACE( [column],'"','')+'"'
FROM [table]
答案 2 :(得分:0)
以下代码检查是否有'"''在字符串的开头和结尾,然后替换'"'和连接'''开始和结束字符串。如果字符串没有'"'在字符串的开头和结尾处,它只是替换了'"'在字符串的所有位置,并不会将其连接到开始和结束。
CREATE TABLE #TAB (COLUMN_VALUE VARCHAR(50))
INSERT INTO #TAB
SELECT '"Testing Name ("Inc")"'
UNION ALL
SELECT '"Testing, "Trust" ("Inc")"'
union all
select 'Testing Name ("Inc")'
union all
SELECT 'Testing, "Trust" ("Inc")'
union all
SELECT 'Testing, "Trust" ("Inc")"'
select * from #TAB
select
case when charindex('"',column_value,1)=1 and charindex('"',column_value,len(column_value))=len(column_value)
then '"'+REPLACE(COLUMN_VALUE,'"','') +'"'
else REPLACE(COLUMN_VALUE,'"','')
end as ClenedString
from #TAB;