2017-10-08 15 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), ''))