2

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

例如对于以下数据:

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

输出应该是:

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

4 回答 4

5
SELECT EmpID, 
      EmpName, 
      REPLACE(REPLACE(CompName, '"', ''), '''','') 
  FROM dbo.table;
于 2012-06-22T12:29:44.597 回答
4
select
    EmpID,
    replace(EmpName, '"', '') as EmpName,
    CompName
from yourTable
于 2012-06-22T12:30:02.420 回答
3

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

替换(字符串表达式,字符串模式,字符串替换)

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

笔记:

通常你会用 '' 替换 ' ,这会让 SQL 在查询数据库时很开心。任何内置 SQL 函数(如替换)的诀窍在于它们也要求您将单引号加倍。

因此,要在代码中将 ' 替换为 '' 你会这样做

于 2012-06-22T12:29:35.280 回答
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
于 2012-06-22T12:39:36.873 回答