我有一张桌子[ABCTable]
当我用
查询时SELECT [XYZ] from [ABCTable]
返回的[XYZ]行集可能包含-[〜],[!],[@],[#],[$],[%],[^],[&], [*],[,],[。],[?]。
是否可以编写仅SQL查询(不是存储过程或子例程)以确保在选择所需数据时删除了这些字符?
答案 0 :(得分:3)
你想要类似的东西
CREATE TABLE T(
ID INT IDENTITY(1,1),
Value VARCHAR(45)
);
INSERT INTO T(Value) VALUES
('.A*B$C@'),
('D#E$,F'),
('.G,H*I@$');
DECLARE @Chars VARCHAR(45) = '@$.,*#';
SELECT *, REPLACE(TRANSLATE(Value, @Chars, REPLICATE(' ', LEN(@Chars))), ' ', '') Result
FROM T;
返回:
+----+----------+--------+
| ID | Value | Result |
+----+----------+--------+
| 1 | .A*B$C@ | ABC |
| 2 | D#E$,F | DEF |
| 3 | .G,H*I@$ | GHI |
+----+----------+--------+
注意::如果那里有空格,我建议您使用CHAR(9)
代替
REPLACE(TRANSLATE(Value, @Chars, REPLICATE(CHAR(9), LEN(@Chars))), CHAR(9), '')