我遇到了另一个臭名昭着的SQL服务器字符串拆分挑战。
以下是我可用的数据(ActiveDirectory组):
Domain1\EDE_C_SD_C292F61A-4432-4D4B-84B4-7D8250B551C8_DENY
Domain2\TIP_C_C59123C9-8F06-4C8C-BCAC-B15FAE8D41F1_DENY
Domain1\MAL_G_C_GLOBAL-UPDATE_690B3861-CC86-4995-B8E3-921B8793D1DA_DENY
Domain1\APPEDK_C_SD_SOMETEXT_690B3861-CC86-4995-B8E3-921B8793D1DA_DENY
Domain1\APPEDK_C_SD_C59123C9-8F06-4C8C-BCAC-B15FAE8D41F1_DENY
Domain1\MAL_G_C_GLOBAL-UPDATE_BCA567DA-B1D7-4E9B-B181-DDDC007D65E0_DENY
Domain1\WOL_C_SD_690B3861-CC86-4995-B8E3-921B8793D1DA_DENY
Domain2\GAL_C_C59123C9-8F06-4C8C-BCAC-B15FAE8D41F1_DENY
Domain1\ESS_C_SD_690B3861-CC86-4995-B8E3-921B8793D1DA_DENY
有一个基础语法规则:所有字符串以[GUID] _DENY结尾,而组前缀可以是任何
我需要拆分字符串,以便结果如下所示:
Domain | Prefix | GUID
Domain1 | EDE_C_SD_ | C292F61A-4432-4D4B-84B4-7D8250B551C8
Domain2 | TIP_C_ | C59123C9-8F06-4C8C-BCAC-B15FAE8D41F1
等
在SQL Server 2008 R2上运行我有点困惑:(
答案 0 :(得分:0)
结合charindex和substring
select
SUBSTRING ( a , 0, charindex('\\', a )) as Domain,
SUBSTRING ( a , charindex('\\', a ) + 2, len(a) - 36 - 5 - charindex('\\', a )) as Prefix,
SUBSTRING ( a , len(a) - 36 - 5 + 1 , 36 ) as GUID from ad
其中ad
是您的表格,a
是包含广告数据的列。
完整SqlFiddle。