【问题标题】:How to remove double quotes within a column in SQL server 2012如何在 SQL Server 2012 中删除列中的双引号
【发布时间】:2017-01-30 07:26:26
【问题描述】:
我需要删除列值中的双引号。例如,我在表中有一个列,其值如下
- “测试名称(“Inc”)”
- “测试,”信任“(“公司”)”
我需要删除“Inc”和“Trust”周围的双引号,列值应如下所示
- “测试名称(公司)”
- “测试,信任(公司)”
我尝试使用 REPLACE() 函数。但它会替换一个值中的所有双引号。但我想在值的开头和结尾保留引号。请帮忙
【问题讨论】:
标签:
sql-server
sql-server-2008
sql-server-2012
【解决方案1】:
使用 Replace 从字符串中删除双引号。然后是前缀、后缀加双引号。
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)" |
+----------------------------+------------------------+
【解决方案2】:
如果值的开头和结尾总是包含双引号,请尝试以下脚本。
SELECT '"'+REPLACE( [column],'"','')+'"'
FROM [table]
【解决方案3】:
以下代码检查字符串的开头和结尾是否有'"',然后替换'"'并将'"'连接到字符串的开头和结尾。如果字符串没有'"'在字符串的开头和结尾处,它只是在字符串的所有位置替换'"',而不是将它连接到开头和结尾。
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;