SQL分裂变量字符串与GUID?

时间:2014-08-01 14:55:39

标签: sql string sql-server-2008-r2 split guid

我遇到了另一个臭名昭着的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上运行我有点困惑:(

1 个答案:

答案 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