您可以尝试以下方法。首先需要找到第一个
=
的位置,因为名字将从那里开始,然后需要找到以
,
分隔的名称的长度。因此,我们要找到下一个
,
的索引,并从到
=
的字符串长度中减去它。剩余的字符串就是您期望的名称。
我考虑您的第一个值“CN=”可能会因某些条件而变化。
declare @str varchar(max) = 'CN=Khushwant Khatri,OU=TestMig,DC=valjha,DC=vedantaresource,DC=local'
select substring( @str, charindex('=',@str)+1, (charindex(',',@str) - (charindex('=',@str) +1) ))
根据提供的表格结构详情,请查看以下代码片段。
Create table trim_string ( string_value nvarchar(max) )
Insert into trim_string ( string_value )
values ( 'CN=Khushwant Khatri,OU=TestMig,DC=valjha,DC=vedantaresource,DC=local' )
, ( 'CN=Raghav Tare,OU=EXECUTIVE,OU=EXUDR,DC=HZL01,DC=vedantaresource,DC=local' )
, ( 'CN=D K Chodankar,OU=Users,OU=AD LotusSync,DC=SGL01,DC=vedantaresource,DC=local' )
; with cte as (
select string_value , substring( string_value, charindex('=',string_value)+1, (charindex(',',string_value) - (charindex('=',string_value) +1) )) newvalue
from trim_string )
select * into #temp from cte
select * from cte
update cte set string_value = newvalue
select * from trim_string
根据评论讨论,请尝试这样做。
; with cte as (
select string_value , substring( string_value, charindex('=',string_value)+1, (charindex(',',string_value) - (charindex('=',string_value) +1) )) newvalue
from trim_string )
select * from cte
这应该会给出您表中所有字符串记录,其中“Name”将在新列中提取为
newvalue
。