【问题标题】:How to write a query which fetches data from a table without the quotes and double quotes in the data stored如何编写从表中获取数据的查询,而存储的数据中没有引号和双引号
【发布时间】:2012-06-23 14:37:00
【问题描述】:

我想编写一个简单的查询,它会从表中获取数据(可能包含引号和双引号),但它应该删除其中的所有引号。

例如对于以下数据:

EmpID  EmpName  CompName
-----  -------  -----------
1234   "xyz"    A's Company

输出应该是:

EmpID  EmpName  CompName
-----  -------  -----------
1234   xyz      As Company

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql


    【解决方案1】:
    SELECT EmpID, 
          EmpName, 
          REPLACE(REPLACE(CompName, '"', ''), '''','') 
      FROM dbo.table;
    

    【讨论】:

      【解决方案2】:
      select
          EmpID,
          replace(EmpName, '"', '') as EmpName,
          CompName
      from yourTable
      

      【讨论】:

        【解决方案3】:

        利用sql server的replace功能为你解决问题

        REPLACE ( string_expression , string_pattern , string_replacement )

        select EmpID,
                 replace(replace(EmpName,'"', ''),'''','') Empname, 
                  replace(replace(CompName,'"', ''),'''','') CompName 
        from table 
        

        注意:

        通常你会将 ' 替换为 '',这将使 SQL 在查询数据库时感到满意。任何内置 SQL 函数(如替换)的诀窍在于它们也要求您将单引号加倍。

        所以要在代码中将 ' 替换为 '' 你会这样做

        【讨论】:

          【解决方案4】:

          我假设您想替换 EmpName 和 CompName 列中的单引号/双引号。一个简单的替换就可以了,但是你想替换 2 组,所以我会嵌套替换命令。

          您可能已经知道这一点,但是单引号需要在您的查询中加倍,这样 sql 就不会认为您开始一个字符串。

          基本上:

          Replace(Replace([Column], '"', ''), '''', '')
          -- here are the targets    ^         ^^
          -- replaced with nothing       ^^         ^^
          

          所以,你的最终代码可能是:

          SELECT
            EmpID,
            REPLACE(REPLACE(EmpName, '"', ''), '''',''),
            REPLACE(REPLACE(CompName, '"', ''), '''','')
          
          FROM
            yourTableName
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-09-22
            • 1970-01-01
            • 2014-10-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-09
            相关资源
            最近更新 更多