sql - 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
谁能建议我如何提取这些数据?
解决方案
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”
推荐阅读
- java - Java Swing GUI 用户交互
- cil - Mono.Cecil - 如何找到 PInvoke DLL 名称?
- java - 将 3GB 文件转换为字节数组
- python - Django 模板错误“TemplateDoesNotExist at”
- php - 是否可以在 silverstripe 子站点模块中的所有子站点上显示特定页面?
- c# - 关于 UWP 上 DataGrid 的文档不清楚
- python-3.x - 当另一个 tkinter 打开时,单选按钮行为异常
- android - CMake与服务器通信发生错误
- excel - 无法使用调用的函数使用 VBA 创建时间戳
- azure - 在 PowerShell Runbook 中使用 Azure 文件共享