首页 > 解决方案 > 仅选择字符串 SQL Server 的一部分

问题描述

我有以下查询:

Select
    Notes
From
    Table

样本输出可能是:

78652972MWGN00183HCE736430
77305311FTBCHCE735946Wheat
Training

然而,这是我想要的,因为输出是字符串中的一个 ID,ID 总是以HCE8 个字符开头,并且如果没有 ID,它会返回No Machine ID

所以我对上述内容的期望是:

HCE736430
HCE735946
No Machine Id

我怎样才能做到这一点?

我看过 using SUBSTRING,但无法搜索 HCE 部分。

我目前在 Excel 中使用MIDand执行此操作SEARCH

=MID(A2,SEARCH("HCE",A2),9)

标签: sqlsql-server

解决方案


您可以为此使用 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

推荐阅读