SQL Server中的REGEXP_SUBSTR等效项

时间:2017-01-02 09:25:54

标签: sql-server oracle regexp-substr

我使用

进行Oracle查询
SELECT REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA',',[^,]+,') 
FROM DUAL;

它返回如下输出:

, Redwood Shores,

我试图在SQL Server中获得完全相同的结果。我尝试按以下方式执行此操作

 substring(text, patindex, length)

但我在长度规格方面遇到了困难。

请告诉我如何在SQL Server中实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下查询

WITH DUAL AS (SELECT '500 Oracle Parkway, Redwood Shores, CA' as st)


SELECT 
SUBSTRING(REVERSE(SUBSTRING(REVERSE(st),CHARINDEX(',',REVERSE(st)),LEN(st))),CHARINDEX(',',st),LEN(st)) str_value
FROM DUAL

以下是我得到的结果

enter image description here

注意:with clause仅用于数据准备。只需使用substring

中的select statement部分即可

答案 1 :(得分:1)

试试这个:

Declare @test varchar(max)='500 Oracle Parkway, Redwood Shores, CA'
select reverse(substring(reverse(substring(@test,charindex(',',@test),len(@test))),
        charindex(',',reverse(substring(@test,charindex(',',@test),len(@test)))),
        len(substring(@test,charindex(',',@test),len(@test)))))