首页 > 解决方案 > SQL 选择数字字符后的所有内容

问题描述

我在列中有以下文字:

ABC XYZ 100 MG PL/2 ML ABCD

我想提取数字之后和之前的所有内容ML

预期输出:

100 MG PL/2 ML

我试过RIGHT了,PATINDEX但它在数字数据之后显示整个字符串,如下所示:

Select RIGHT(col, PATINDEX('%[^A-Z] %', col))
From table

获得的输出:

100 MG PL/2 ML ABCD

谁能建议我如何提取这些数据?

标签: sqlsql-server

解决方案


 SELECT SUBSTRING(LEFT('ABC XYZ 100 MG PL/2 ML ABCD',CHARINDEX('ML', 'ABC XYZ 100 MG PL/2 ML ABCD') + 2),PATINDEX('%[0-9]%','ABC XYZ 100 MG PL/2 ML ABCD'),LEN('ABC XYZ 100 MG PL/2 ML ABCD'))

-

SELECT SUBSTRING(LEFT(col,CHARINDEX('ML', col) + 2),PATINDEX('%[0-9]%',col),LEN(col))
                                     from table

虽然,您在问题中声明您想要“之前”“ML”中的所有内容,并且您的预期输出中包含“ML”


推荐阅读