這假定有恰好1雙正確的嵌套括號(和是T-SQL語法):
DECLARE @bla VARCHAR(50)
SET @bla = 'blablablabla(XYZ)asdsdsad'
SELECT SUBSTRING(
@bla,
CHARINDEX('(', @bla) + 1,
CHARINDEX(')', @bla) - CHARINDEX('(', @bla) - 1
)
收率:
'XYZ'
編輯:這將檢查各種格式不正確的字符串,並可以在WHERE子句中使用(例如, WHERE ... <> 'no match'
):
SELECT
CASE
WHEN
/* check for '(' and ')' */
CHARINDEX('(', @bla) > 0 AND CHARINDEX(')', @bla) > CHARINDEX('(', @bla)
/* check for 'bla(bla(XYZ)bla' */
AND CHARINDEX('(', @bla, CHARINDEX('(', @bla) + 1) = 0
/* check for 'bla(XYZ)bla)bla' */
AND CHARINDEX(')', @bla, CHARINDEX(')', @bla) + 1) = 0
THEN SUBSTRING(@bla,
CHARINDEX('(', @bla) + 1,
CHARINDEX(')', @bla) - CHARINDEX('(', @bla) - 1
)
ELSE 'no match'
END
+1表示嵌套括號部分的條件。 – Learning 2009-04-16 16:02:05
其實,如果數據沒有括號,會不會出錯? – Learning 2009-04-16 16:10:54
這就是爲什麼我包含「假定一對」部分。:-) – Tomalak 2009-04-16 16:14:53