如何将regexp_substr(Oracle)转换为SQL Server



我有一个数据表,它有一列作为Acctno,预期显示在单独的列中

|Acctno                | expected_output|
|ABC:BKS:1023049101    | 1023049101     |
|ABC:UWR:19048234582   | 19048234582    |
|ABC:UEW:1039481843    | 1039481843     |

我知道在Oracle SQL中我使用了以下

select regexp_substr(acctno,'[^:]',1,3) as expected_output
from temp_mytable

但在Microsoft SQL Server中,我收到一个错误,即regexp_substr不是内置函数

如何解决此问题?

我们可以在这里使用PATINDEXSUBSTRING

SELECT SUBSTRING(acctno, PATINDEX('%:[0-9]%', acctno) + 1, LEN(acctno)) AS expected_output
FROM temp_mytable;

演示

注意,这个答案假设第三个组件总是以数字开头,并且前两个组件没有任何数字。如果这不是真的,那么我们将不得不做更多的工作。

如果所需的值是字符串的最后一部分,并且不超过4个段,则为另一个选项。

Select * 
,NewValue = parsename(replace(Acctno,':','.'),1)
from YourTable

最新更新