SQL删除列中的部分文本

时间:2015-06-27 10:42:25

标签: sql-server

我试图摆脱列中的部分文本。 它是一个有100.000行的表,基本上是它的名字;姓氏,其中Lastname也包含Firstname,其中很多,但远非所有。

例如:

Firstname Lastname
Magnus    Johansson
Anders    Anders Jansson
Stefan    Stefan Andersson
Emma      Svensson
Annelie   Annelie Nilsson

我想清理它:

Firstname Lastname
Magnus    Johansson
Anders    Jansson
Stefan    Andersson
Emma      Svensson
Annelie   Nilsson

我尝试过使用SUBSTR和RIGHT进行一些修改,但没有成功

RIGHT(Lastname, LEN(Lastname) - LEN(Firstname)) as New_Lastname

RIGHT以及我看过的其他人需要一个固定的int值来确定应该替换/删除的内容。

任何人都知道如何在需要更改的文本上继续使用可变长度?

1 个答案:

答案 0 :(得分:2)

尝试REPLACE

REPLACE (Lastname, Firstname + ' ', '')

如果Firstname中包含Lastname,那么它只会被空字符串替换。

注意:您需要为string_pattern的{​​{1}}添加额外空格,以避免替换属于REPLACE的任何Firsname值,如此情况下:

Lastname

最后一点,您可能需要将LTRIM应用于Firstname Lastname ------------------- Mark Markuson ,例如:

REPLACE

以便在更换后修剪任何前导空格。

Demo here