删除符合条件的子串部分
问题描述:
我使用以下方法删除名称中的前缀,但是如果“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.%';
答
你可以试试这个。
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), ''))
@GordonLinoff对不起,我改了它。 – whoami