假设我有从SSIS中的csv导入的数据,如下所示:
ID,Name,Year,Place
1,"John",1994,"UK"
2,"Bill",1899,"USA"
3,"Gill",1989,"Germ"any"
在这种情况下,Germany
中有一个错字
我想知道是否有一种方法(也许在派生列组件中)删除了"
,当文本像_"_
_是字母字符或空格。
这个问题接近我所需要的:SSIS - remove character X unless it's followed by character Y,但是它是用SQL完成的,而我的数据是通过csv在SSIS中完成的。
答案 0 :(得分:1)
你可以喜欢
CREATE TABLE T
([ID] int, [Name] varchar(45), [Year] int, [Place] varchar(45));
INSERT INTO T
([ID], [Name], [Year], [Place])
VALUES
(1, '"John"', 1994, '"UK"'),
(2, '"Bill"', 1899, '"USA"'),
(3, '"Gill"', 1989, '"Germ"an"y"');
SELECT ID,
Name,
[Year],
CONCAT('"', REPLACE(Place, '"', ''), '"') Place
FROM T;
返回:
+----+--------+------+-----------+
| ID | Name | Year | Place |
+----+--------+------+-----------+
| 1 | "John" | 1994 | "UK" |
| 2 | "Bill" | 1899 | "USA" |
| 3 | "Gill" | 1989 | "Germany" |
+----+--------+------+-----------+
答案 1 :(得分:1)
@Sami发布的答案是一个不错的选择,如果您的目标是为此使用派生列,则以下表达式将删除任何"
,同时仍保留前导和尾随双引号。确保使用"
字符对\
进行转义,否则SSIS表达式将失败。
"\"" + REPLACE(Place,"\"","") + "\""