在SQL Server 2012中,我有一列包含长文本数据。文字中的某处有一些格式为
的文字{epa_file_num} = {138410-81}
如果存在,我想提取138410-81
作为列值。在常规的JS正则表达式中,我将使用类似{ *epa_file_num *} *= *{ *\d*-?\d* *}
的内容来匹配列,然后使用捕获组来获取值。
但是如何在SQL Server 2012中获得它?
谢谢
答案 0 :(得分:0)
不是正则表达式,但这可能会满足您的要求:
DECLARE @Input VARCHAR(MAX)='{some name} = {a value} some text {epa_file_num} = {138410-81} other text'
SET @Input=REPLACE(@Input,' ','')
SET @Input=SUBSTRING(@Input,NULLIF(PATINDEX('%{epa_file_num}={%',@Input),0)+LEN('{epa_file_num}={'),LEN(@Input))
SET @Input=SUBSTRING(@Input,1,NULLIF(CHARINDEX('}',@Input),0)-1)
SELECT @Input
首先,我删除所有空格,然后寻找{epa_file_num}=
,并将所有内容都放在该字符串之后,直到下一个}
。