【问题标题】:How to remove double quotes within a column in SQL server 2012如何在 SQL Server 2012 中删除列中的双引号
【发布时间】:2017-01-30 07:26:26
【问题描述】:

我需要删除列值中的双引号。例如,我在表中有一个列,其值如下

  1. “测试名称(“Inc”)”
  2. “测试,”信任“(“公司”)”

我需要删除“Inc”和“Trust”周围的双引号,列值应如下所示

  1. “测试名称(公司)”
  2. “测试,信任(公司)”

我尝试使用 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多