sql - 在特定字符之后但在不同字符之前获取 SQL 子字符串

标签 sql substring

我有一些要从 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/

相关文章:

java - '1' 中的未知列 'field list'

sql - 如何将参数传递给 sqldataadapter?

php - 如何使用 password_verify() 从数据库中检索密码?

java - 如何在 jlist 内的 java 中显示文件名的短长度版本

java - 获取精确子串的数量

javascript - 使用子字符串在javascript中剪切并重新构造字符串

php - 属性值的空白值

c++ - 运行查询后如何从sql表中获取列

C# 8 从字符串中获取最后 n 个字符的方法

ios - 如何在iOS上将字符串拆分为子字符串?