Sql 隔离可以位于基于文本的单元格中任何位置的字母数字ID

Sql 隔离可以位于基于文本的单元格中任何位置的字母数字ID,sql,sql-server,split,Sql,Sql Server,Split,我试图从文本单元格中分离某个字符串 例如,我想从字符串中提取“AB-T120-15”“他的服务器ID是AB-T120-15,他的问题是他需要重新启动” AB-T120-15就是一个例子,但它们都是以AB-T、CL-R等开头的最大长度为13个字符的代码 代码可以出现在列的文本字段中的任何位置 string\u split() 我已经尝试了许多子字符串和左键的组合,但我似乎无法让它工作 有什么想法吗?字符串操作不是SQL Server的强项,我假设您正在使用SQL Server 您可以通过相当痛苦的

我试图从文本单元格中分离某个字符串

例如,我想从字符串
中提取
“AB-T120-15”
“他的服务器ID是AB-T120-15,他的问题是他需要重新启动”

AB-T120-15
就是一个例子,但它们都是以
AB-T
CL-R
等开头的最大长度为13个字符的代码

代码可以出现在列的文本字段中的任何位置

string\u split()

我已经尝试了许多子字符串和左键的组合,但我似乎无法让它工作


有什么想法吗?

字符串操作不是SQL Server的强项,我假设您正在使用SQL Server

您可以通过相当痛苦的字符串操作来实现这一点:

select left(stuff(str, 1, patindex('%[A-Z][A-Z]-[A-Z]%', str) - 1, ''),
            charindex(' ', stuff(str, 1, patindex('%[A-Z][A-Z]-[A-Z]%', str), '') + ' ')
           )
from (values ('His server ID was AB-T120-15 and his problem was that he needed a reboot')) v(str);

用你正在使用的数据库标记你的问题。完成,谢谢。我还不太熟悉Stackoverflow的礼节,我甚至不是trade heheThanks@Gordon的程序员。我理解你在这里做什么,你在这里寻找一种模式。这是有道理的。我正在尝试将该选择应用于整列值。例如:
code
从dm\u all\u tickets中选择t.ticket\u subject作为t,其中(t.ticket\u subject包含带模式的内容)