如何编写从表中获取数据的查询,而不存储所存储数据中的引号和双引号

时间:2012-06-22 12:28:05

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

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

e.g。对于以下数据:

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

输出应该是:

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

4 个答案:

答案 0 :(得分:5)

SELECT EmpID, 
      EmpName, 
      REPLACE(REPLACE(CompName, '"', ''), '''','') 
  FROM dbo.table;

答案 1 :(得分:4)

select
    EmpID,
    replace(EmpName, '"', '') as EmpName,
    CompName
from yourTable

答案 2 :(得分:3)

利用sql server的替换功能为您解决问题

REPLACE ( string_expression , string_pattern , string_replacement )

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

注意:

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

所以要在代码中替换'with',你要这样做

答案 3 :(得分:0)

我假设您要在EmpName和CompName列中替换单/双引号。一个简单的替换会执行此操作,但您想要替换2个集合,因此我将嵌套替换命令。

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

基本上:

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

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

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

FROM
  yourTableName