在 SQL 服务器查询中使用 pattern 和 patindex 函数时如何忽略特定的字符串值?
How to ignore specific string value when using pattern and patindex function in SQL Server Query?
我这里有这个查询。
WITH Cte_Reverse
AS (
SELECT CASE PATINDEX('%[^0-9.- ]%', REVERSE(EmailName))
WHEN 0
THEN REVERSE(EmailName)
ELSE left(REVERSE(EmailName), PATINDEX('%[^0-9.- ]%', REVERSE(EmailName)) - 1)
END AS Platform_Campaign_ID,
EmailName
FROM [Arrakis].[xtemp].[Stage_SendJobs_Marketing]
)
SELECT REVERSE(Platform_Campaign_ID) AS Platform_Campaign_ID, EmailName
FROM Cte_Reverse
WHERE REVERSE(Platform_Campaign_ID) <> '2020'
AND REVERSE(Platform_Campaign_ID) <> ''
AND LEN(REVERSE(Platform_Campaign_ID)) = 4;
大部分工作正常,下面是结果集的屏幕截图。
我在上面发布的查询从为我从中提取的列设置的初始值中提取右侧的 4 个数字。但是我无法弄清楚当最正确的值为-v2、-v1 等时,我如何也可以让查询忽略案例。基本上任何带有-v 的东西以及它是什么数字版本。
如果你想要四位数,那么一种方法是:
select substring(emailname, patindex('%[0-9][0-9][0-9][0-9]%', emailname), 4)
我这里有这个查询。
WITH Cte_Reverse
AS (
SELECT CASE PATINDEX('%[^0-9.- ]%', REVERSE(EmailName))
WHEN 0
THEN REVERSE(EmailName)
ELSE left(REVERSE(EmailName), PATINDEX('%[^0-9.- ]%', REVERSE(EmailName)) - 1)
END AS Platform_Campaign_ID,
EmailName
FROM [Arrakis].[xtemp].[Stage_SendJobs_Marketing]
)
SELECT REVERSE(Platform_Campaign_ID) AS Platform_Campaign_ID, EmailName
FROM Cte_Reverse
WHERE REVERSE(Platform_Campaign_ID) <> '2020'
AND REVERSE(Platform_Campaign_ID) <> ''
AND LEN(REVERSE(Platform_Campaign_ID)) = 4;
大部分工作正常,下面是结果集的屏幕截图。
我在上面发布的查询从为我从中提取的列设置的初始值中提取右侧的 4 个数字。但是我无法弄清楚当最正确的值为-v2、-v1 等时,我如何也可以让查询忽略案例。基本上任何带有-v 的东西以及它是什么数字版本。
如果你想要四位数,那么一种方法是:
select substring(emailname, patindex('%[0-9][0-9][0-9][0-9]%', emailname), 4)