我在数据库中有以下字符串:
SET @Value = "[4888378977CA4A5] Test String"
此外,@Value
也可能在字符串的开头有'RE:',例如:
SET @Value = "RE: [4888378977CA4A5] Test String"
如何使用正则表达式访问字符串的4888378977CA4A5
部分?
谢谢!
答案 0 :(得分:3)
T-SQL没有本机正则表达式支持。您可以使用a CLR function来访问.NET正则表达式功能,或者如果模式很简单,则使用PatIndex。
或者,如果您只想获取[...]
的内容,那么CharIndex可能会有效。
;with strings as
(
SELECT 'no match' AS string UNION ALL
SELECT '[4888378977CA4A5] Test String' UNION ALL
SELECT 'RE: [Other Value] Test String'
)
select substring(string,
charindex('[',string)+1,
charindex(']',string, charindex('[',string))-charindex('[',string)-1)
AS result
from strings
where string like '%/[%/]%' ESCAPE '/'
返回
result
-----------------------------
4888378977CA4A5
Other Value
答案 1 :(得分:1)
This是使用VBScript.RegExp在SQL Server 2000中执行此操作的方法。
但是,在SQL Server 2005和SQL Server 2008中,最好使用.NET Regex Library,如here中所示。
答案 2 :(得分:0)
正则表达式为\[([A-Z0-9]+)\]
。提取捕获组中的子字符串取决于您的正则表达式风格。它可以是$1
,\1
,match.groups(1)
等。