如何修改查询以从所有列中删除双引号?

时间:2018-10-23 00:40:37

标签: sql sql-server tsql

我运行了一个查询-该查询的结果放入.csv中,以便另一个程序运行:该其他程序在双引号上阻塞。因此,我通常只是在Excel中进行快速查找和替换,而不用所有双引号将其替换。

虽然我有一个新的边缘方案-这次的输出文件为> 2,000,000行,这意味着我无法在Excel中打开它进行查找和替换。

是否有一种很简单的方法可以从查询结果中删除双引号?我的下意识的反应是使用CASE或Variables,但似乎都不是特别干净。

我没有发布查询,因为它有100多个行,并且我认为这里可能有一个通用概念。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是一个简单的例子

CREATE TABLE T
(
  Name    VARCHAR(45),
  Address VARCHAR(45)
);

INSERT INTO T VALUES
('"FirstName"', '"FirstAddress"');

SELECT *
FROM T;

SELECT REPLACE(Name, '"', '') Name,
       REPLACE(Address, '"', '') Address
FROM T;

例如,最好使用LEFT()RIGHT()函数,因为它们可以"First"Address"来确保仅删除第一个和最后一个。

SELECT LEFT(RIGHT(Name, LEN(Name) - 1), LEN(Name) - 2) Name,
       LEFT(RIGHT(Address, LEN(Address) - 1), LEN(Address) - 2) Address
FROM T;

返回

+-------------+----------------+
|    Name     |    Address     |
+-------------+----------------+
| "FirstName" | "FirstAddress" |
+-------------+----------------+


+-----------+--------------+
|   Name    |   Address    |
+-----------+--------------+
| FirstName | FirstAddress |
+-----------+--------------+

请记住, REPLACE() 函数将删除找到的所有"

答案 1 :(得分:1)

拥有.csv文件后,请通过过滤器运行该文件。

powershell -NoProfile -Command ^
    "Get-Content -Path '.\quotedtext.csv' |" ^
    "ForEach-Object{ $_.Replace('""','') }" >quotednot.csv

答案 2 :(得分:0)

D'oh-REPLACE函数可以完美地实现此目的。因此,仅针对每个选定字段REPLACE(FieldName,'"','')删除所有双引号。