Sql server 如何在SQL server 2012中删除列中的双引号

Sql server 如何在SQL server 2012中删除列中的双引号,sql-server,sql-server-2008,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2012,我需要删除列值中的双引号。例如,我在表中有一列,其值如下所示 “测试名称(“公司”)” “测试,信托公司” 我需要删除围绕“Inc”和“Trust”的双引号,列值应如下所示 “测试名称(公司)” 信托(有限公司)测试 我尝试使用REPLACE()函数。但是它替换了一个值中的所有双引号。但我希望保留值开头和结尾的引号。请帮助使用Replace从字符串中删除双引号。然后是前缀,后缀加双引号 DECLARE @VAR VARCHAR(50)='"Testing Name ("Inc")"' CR

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

  • “测试名称(“公司”)”
  • “测试,信托公司”
  • 我需要删除围绕“Inc”和“Trust”的双引号,列值应如下所示

  • “测试名称(公司)”
  • 信托(有限公司)测试

  • 我尝试使用REPLACE()函数。但是它替换了一个值中的所有双引号。但我希望保留值开头和结尾的引号。请帮助

    使用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)" |
    +----------------------------+------------------------+
    

    如果值的开始和结束始终包含双引号,请尝试下面的脚本

    SELECT  '"'+REPLACE( [column],'"','')+'"'
    FROM    [table]
    

    下面的代码检查字符串的开头和结尾是否有''',然后替换'''并连接''',以开始和结束字符串。如果字符串的开头和结尾没有''',则只替换字符串所有位置的'',而不连接到开始和结束

    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;
    

    值的开始和结束将始终包含双引号?是的。大多数情况下,它将在值的开始和结束处包含双引号