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%'
我有以下字符串(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%'