2017-10-08 66 views
0

我使用以下方法删除名称中的前缀,但是如果“MR”后面没有空格。如约翰先生SMITH”,将无法正常工作。对这些有什么建议?我如何删除子,如果它符合WHERE条件。删除符合条件的子串部分

SELECT LTRIM(REPLACE(firstname, SUBSTRING(firstname, 1, CHARINDEX(' ', 
firstname)), '')) 
FROM YOUR_TABLE 
WHERE firstname LIKE 'Mr.%' OR 
firstname LIKE 'Mrs.%' OR 
firstname LIKE 'Miss %' OR 
firstname LIKE 'Dr.%'; 
+0

@GordonLinoff对不起,我改了它。 – whoami

回答

0

你可以试试这个。

SELECT 
LTRIM(REPLACE(firstname, SUBSTRING(firstname, 1, 
    CASE WHEN CHARINDEX('.', firstname) > 0 
     THEN CHARINDEX('.', firstname) 
     ELSE CHARINDEX(' ',firstname) END) , '')) 
FROM YOUR_TABLE 
WHERE firstname LIKE 'Mr.%' OR 
firstname LIKE 'Mrs.%' OR 
firstname LIKE 'Miss %' OR 
firstname LIKE 'Dr.%'; 

和清除的替代方案,

LTRIM(STUFF(firstname, 1, (CASE WHEN CHARINDEX('.', firstname) > 0 
          THEN CHARINDEX('.', firstname) 
          ELSE CHARINDEX(' ',firstname) END), ''))