TSQL 解析字符串

TSQL Parsing strings

我有以下字符串(AD 专有名称):

CN=Surname\, Firstname (something),OU=Fixed6,OU=Department99,OU=Fixed5,OU=Fixed4,DC=Fixed3,DC=Fixed2,DC=Fixed

我需要从中解析出 "Department99"(不需要 "OU=",也不一定需要 "Department",只需要数字)。 数字 99 可以是任何其他整数,右边的字段数是固定的,所以它总是右边的第 6 个字段。

如果可能的话,我更喜欢在带有相关子查询的简单单个 SELECT 语句中的解决方案。

谢谢。

这是一个 SELECT 解决方案:

declare @s nvarchar(max) = 'CN=Surname\, Firstname (something),OU=Fixed6,OU=Department56,OU=Fixed5,OU=Fixed4,DC=Fixed3,DC=Fixed2,DC=Fixed'

select reverse(left(reverse(left(@s, charindex(',', @s, charindex('department', @s, 0)) - 1)), patindex('%[a-zA-Z]%', reverse(left(@s, charindex(',', @s, charindex('department', @s, 0)) - 1)))-1))

这适用于大多数 SQL 服务器版本。

2016 年提供的另一种使用拆分字符串的方法..

select replace(value,'OU=Department','')
 from string_split(@String,',')
where value like '%department%'