在某个字符之后但在不同字符之前获取SQL子字符串

时间:2011-12-06 17:25:06

标签: sql substring

我想从我的SQL Server表中解析一些键值。以下是这些关键值的一些示例:

R50470B50469

B17699C88C68AM

R22818B17565C32G16SU

B1444

我想要从字符串中获取的是所有在字符“B”之后但在任何其他字母字符之前出现的数字,如果它存在,例如“C”。我怎样才能在SQL中执行此操作?

1 个答案:

答案 0 :(得分:2)

WITH VALS(Val) AS
(
SELECT 'R50470B50469' UNION ALL
SELECT 'R22818B17565C32G16SU' UNION ALL
SELECT 'R22818B17565C32G16SU' UNION ALL
SELECT 'B1444'
)
SELECT SUBSTRING(Tail,0,PATINDEX('%[AC-Z]%', Tail))
FROM   VALS
       CROSS APPLY 
        (SELECT RIGHT(Val, LEN(Val) - CHARINDEX('B', Val)) + 'X') T(Tail)
WHERE  Val LIKE '%B%'