Sql 使用PatIndex获取子字符串的第二个匹配项

Sql 使用PatIndex获取子字符串的第二个匹配项,sql,substring,patindex,Sql,Substring,Patindex,通过这个查询,我从一个地址获得了邮政编码,它是有效的,但是在某些情况下,地址号码的长度是5,因此我得到的是这个而不是邮政编码,是否有可能通过PatIndex获得最后一次出现的结果 SELECT address,IIF((PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address)>0), substring(address, PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address), 5) , NULL) AS p

通过这个查询,我从一个地址获得了邮政编码,它是有效的,但是在某些情况下,地址号码的长度是5,因此我得到的是这个而不是邮政编码,是否有可能通过PatIndex获得最后一次出现的结果

SELECT address,IIF((PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address)>0), substring(address, PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address), 5) , NULL) AS postalCode
from table 

如果要获取最后一个事件

反向地址 在反向地址中查找第一个匹配的PatIndex 反转第一个匹配的子字符串 因此

SELECT address,IIF((PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address)>0), reverse(substring(reverse(address), PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', reverse(address)), 5)) , NULL) AS postalCode
from tbl