我想编写一个简单的查询,它将从表中获取数据(可能包含引号和双引号),但它应该删除其中的所有引号。
例如对于以下数据:
EmpID EmpName CompName
----- ------- -----------
1234 "xyz" A's Company
输出应该是:
EmpID EmpName CompName
----- ------- -----------
1234 xyz As Company
我想编写一个简单的查询,它将从表中获取数据(可能包含引号和双引号),但它应该删除其中的所有引号。
例如对于以下数据:
EmpID EmpName CompName
----- ------- -----------
1234 "xyz" A's Company
输出应该是:
EmpID EmpName CompName
----- ------- -----------
1234 xyz As Company
SELECT EmpID,
EmpName,
REPLACE(REPLACE(CompName, '"', ''), '''','')
FROM dbo.table;
select
EmpID,
replace(EmpName, '"', '') as EmpName,
CompName
from yourTable
利用sql server的replace功能为你解决问题
select EmpID,
replace(replace(EmpName,'"', ''),'''','') Empname,
replace(replace(CompName,'"', ''),'''','') CompName
from table
笔记:
通常你会用 '' 替换 ' ,这会让 SQL 在查询数据库时很开心。任何内置 SQL 函数(如替换)的诀窍在于它们也要求您将单引号加倍。
因此,要在代码中将 ' 替换为 '' 你会这样做
我假设您要替换 EmpName 和 CompName 列中的单引号/双引号。一个简单的替换就可以做到这一点,但你想替换 2 组,所以我将嵌套替换命令。
您可能已经知道这一点,但是单引号需要在您的查询中加倍,以便 sql 不会认为您开始一个字符串。
基本上:
Replace(Replace([Column], '"', ''), '''', '')
-- here are the targets ^ ^^
-- replaced with nothing ^^ ^^
因此,您的最终代码可能是:
SELECT
EmpID,
REPLACE(REPLACE(EmpName, '"', ''), '''',''),
REPLACE(REPLACE(CompName, '"', ''), '''','')
FROM
yourTableName