SQL选择从列中删除字符

时间:2014-07-08 22:17:53

标签: sql sql-server-2008

我需要一个“替换”选择查询,在字符串后删除除3个字符以外的所有内容。

示例:

Data = "CN=GOT002086,OU=LAPTOPS,OU=COMPUTERS,OU=GOT,DC=CORP,DC=GDS,DC=COMPANYNAME,DC=COM"

我需要将此字段的输出替换为仅显示“GOT”。我想我可以在列中键入“COMPUTERS”这个词,如果可能的话,在“COMPUTERS”之后只选择3个字符4个空格。此列是完全限定的计算机名称,我只希望显示OU。

1 个答案:

答案 0 :(得分:0)

试试这个。

DECLARE @TestString VARCHAR(1000)
SET @TestString = 'CN=GOT002086,OU=LAPTOPS,OU=COMPUTERS,OU=GOT,DC=CORP,DC=GDS,DC=COMPANYNAME,DC=COM'
SELECT SUBSTRING(@TestString, CHARINDEX('COMPUTERS,', @TestString ,0)+13,3)

更新

CREATE TABLE ActualValuesTable (ValueColumn VARCHAR(250))

INSERT INTO ActualValuesTable VALUES('CN=GOT002086,OU=LAPTOPS,OU=COMPUTERS,OU=GOT,DC=CORP,DC=GDS,DC=COMPANYNAME,DC=COM')
INSERT INTO ActualValuesTable VALUES('CN=GOT002086,OU=LAPTOPS,OU=COMPUTERS,OU=123,DC=CORP,DC=GDS,DC=COMPANYNAME,DC=COM')
INSERT INTO ActualValuesTable VALUES('SomeText..OU=COMPUTERS,OU=789,SomeText..')
INSERT INTO ActualValuesTable VALUES('SomeText..OU=COMPUTERS,OU=012,SomeText..')
INSERT INTO ActualValuesTable VALUES('SomeText..OU=COMPUTERS,OU=234,SomeText..')
INSERT INTO ActualValuesTable VALUES('SomeText..OU=COMPUTERS,OU=456,SomeText..')


SELECT SUBSTRING(ValueColumn, CHARINDEX('COMPUTERS,', ValueColumn ,0)+13,3) FROM ActualValuesTable