【发布时间】:2016-07-04 16:47:25
【问题描述】:
我有一个关于 SQL Server 的问题。
表Emp:
Id | Name
-------+-------------------
1 |test“te d'abc
2 |anr¤a
3 | gs-re-C“te d'ab
4 |M‚fe, DF
5 |R™temd
6 |™jad”ji
7 |Cje y ret¢n
8 |J™kl™balu
9 |le“ne-iokd
10 |liode-Pyr‚n‚ie
11 |V„s G”ta
12 |Sƒo Paulo
13 |vAstra gAtaland
14 |¥uble / Bio-Bio
15 |U“pl™n/ds VAsb-y
我需要用空值替换特殊字符。
根据上表,我想输出如下所示的内容。我试过这样:
select
REPLACE(state, SUBSTRING(state, PATINDEX('%[^"a-z"]%', state), 1), '') as name,
id
from emp
此查询未返回预期结果。
输出是:
Id | Name
-------+-------------
1 |testtedabc
2 |anra
3 |gsreCedab
4 |MfeDF
5 |Rtemd
6 |jadji
7 |Cjeyretn
8 |Jkbalu
9 |eneiokd
10 |iodePyrnie
11 |VsGta
12 |SoPaulo
13 |vAstragAtaand
14 |ubleBioBio
15 |UpndsVAsby
请告诉我如何编写查询以在 SQL Server 中完成此任务。
【问题讨论】:
-
有关如何从字符串中删除非字母数字字符的 UDF,请参阅 stackoverflow.com/questions/1007697/…,这比尝试执行内联替换更具可读性(您可能需要在其他地方执行此操作)我在您的查询中假设)。
标签: sql-server sql-server-2008