2017-01-02 303 views
1

我使用REGEXP_SUBSTR相當於在SQL Server

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

它返回下面的輸出Oracle查詢:

, Redwood Shores, 

我試圖讓SQL Server中的完全相同的結果。我試圖做到如下

substring(text, patindex, length) 

但我掙扎着長度規範。

你可以讓我知道我可以如何實現這是在SQL Server?

+0

SQL Server不具有正則表達式。您可以使用[STRING_SPLIT](https://msdn.microsoft.com/en-us/library/mt684588.aspx)表值函數來拆分字符串並將其部分作爲單獨的行返回 –

回答

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

試試這個:

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)))))