我运行了一个查询 - 其结果被放入另一个程序运行的.csv中:另一个程序被双引号阻塞。 因此,我通常只是在Excel中快速查找和替换,将所有双引号替换为任何内容。
不过,我有一个新的边缘场景 - 这次的输出文件> 2,000,000 行,这意味着我无法在 Excel 中打开它来执行查找和替换。
有没有一种非常简单的方法可以从查询结果中删除双引号? 我的下意识反应是使用 CASE 或变量,但似乎都不是特别干净。
我没有发布查询,因为它> 100 行,我认为这里可能有一个一般概念。
思潮?
这是一个简单的例子
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()
函数将删除找到的任何"
。
获得.csv文件后,通过过滤器运行它。
powershell -NoProfile -Command ^
"Get-Content -Path '.quotedtext.csv' |" ^
"ForEach-Object{ $_.Replace('""','') }" >quotednot.csv
D'oh - REPLACE 函数将完美地用于此。 因此,只需为每个选定的字段REPLACE(FieldName,'"','')
删除所有双引号。