如何在SQL Server中使用PATINDEX?

时间:2019-07-19 21:34:47

标签: sql-server regex sql-server-2012 patindex

在SQL Server 2012中,我有一列包含长文本数据。文字中的某处有一些格式为

的文字
{epa_file_num} = {138410-81}

如果存在,我想提取138410-81作为列值。在常规的JS正则表达式中,我将使用类似{ *epa_file_num *} *= *{ *\d*-?\d* *}的内容来匹配列,然后使用捕获组来获取值。

但是如何在SQL Server 2012中获得它?

谢谢

1 个答案:

答案 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}=,并将所有内容都放在该字符串之后,直到下一个}