-1

我想知道这是否可能,我有一组凌乱的名字数据可供使用,并且它由其他应用程序共享,所以我不想运行任何更新语句。但数据有时会包含一个 AKA,例如:

罗伯特(又名鲍勃)

我正在尝试获取一个干净的数据,其中只显示“罗伯特”。

我想到的一种方法是使用临时表,然后使用 CHARINDEX 表示 ( 和 ),然后替换 ( 和 ) 之间的内容。这似乎是一个冗长的方法。

有没有更聪明的方法?

编辑:数据地狱的更多例子。有时括号出现在前面或混淆,例如:

(比尔)威廉

小理查德(迪克)

4

3 回答 3

1

未经测试:

FirstName = case when charindex('(AKA', FirstName) = 0 
                 then FirstName 
                 else substring(FirstName, 1, charindex('(AKA', FirstName)) end
于 2013-03-12T00:16:45.237 回答
0

如果嘈杂的字符串模式不可预测,最好使用 SQL CLR TVF(表值函数),使用 C# 代码正则表达式。以 xml 作为输入参数,其中包含您需要处理的数据,返回已处理数据的表。

于 2013-03-12T07:07:44.870 回答
-1

彼得让球为我滚动!感谢您让我开始走上正轨!

 SELECT
 CASE WHEN FirstName like '%)%'
 THEN REPLACE(FirstName,
 SUBSTRING(FirstName,CHARINDEX('(',FirstName),CHARINDEX(')',FirstName)-CHARINDEX('(',FirstName)+1),'')
 ELSE FirstName END
于 2013-03-12T00:45:01.107 回答