sql - 仅选择字符串 SQL Server 的一部分
问题描述
我有以下查询:
Select
Notes
From
Table
样本输出可能是:
78652972MWGN00183HCE736430
77305311FTBCHCE735946Wheat
Training
然而,这是我想要的,因为输出是字符串中的一个 ID,ID 总是以HCE
8 个字符开头,并且如果没有 ID,它会返回No Machine ID
所以我对上述内容的期望是:
HCE736430
HCE735946
No Machine Id
我怎样才能做到这一点?
我看过 using SUBSTRING
,但无法搜索 HCE 部分。
我目前在 Excel 中使用MID
and执行此操作SEARCH
:
=MID(A2,SEARCH("HCE",A2),9)
解决方案
您可以为此使用 PATINDEX。这是一个例子。
declare @Something table (SomeVal varchar(50))
insert @Something values
('78652972MWGN00183HCE736430')
, ('77305311FTBCHCE735946Wheat')
, ('Training')
,('asdfHCExx')
select case when patindex('%HCE[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]%', SomeVal) > 0
then substring(SomeVal, patindex('%HCE[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]%', SomeVal), 9)
else 'No Machine Id'
end
from @Something
推荐阅读
- google-web-designer - 谷歌网页设计师在启动期间卡在黑屏
- java - 找不到docker ADD命令抛出文件
- python-3.x - 如何在不同列中正确绘制带有字符串和数字的分组熊猫系列
- bash - 在 bash 脚本的循环中使用 killall
- excel-formula - 基于百分比的激励分配
- sql - SQL Server 中的可选搜索条件
- typescript - 如何在 VS 代码上调试包含 Class 的打字稿文件?
- c - vmlinux 可以加载到虚拟机的内存中——它之前是什么?
- kivy - Kivy 套接字编程
- mongodb - mongodb .js 文件未从 Dockerfile 中的 shell 脚本执行