如何将 regexp_substr(Oracle) 转换为 SQL 服务器?

How to convert regexp_substr(Oracle) to SQL Server?

我有一个数据 table,其中有一列为 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 服务器中我收到一个错误 regexp_substr 不是内置函数

我该如何解决这个问题?

我们可以在这里使用 PATINDEXSUBSTRING:

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

Demo

请注意,此答案假定第三个组成部分始终以数字开头,而前两个组成部分没有任何数字。如果不是这样,那么我们将不得不做更多的工作。

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

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