我有一些要从 SQL Server 表中解析出来的键值。以下是这些关键值的一些示例:
R50470B50469
B17699C88C68AM
R22818B17565C32G16SU
B1444
我想从字符串中取出的是出现在字符“B”之后但在任何其他字母字符(如果存在,例如“C”)之前的所有数字。我如何在 SQL 中执行此操作?
最佳答案
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%'
关于sql - 在特定字符之后但在不同字符之前获取 SQL 子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404089/