在 SQL 中的 varchar 中查找前四个数字

Finding first four numbers inside varchar in SQL

我必须使用 SQL 在 table 中找到第一个四个数字的序列。

    RVSP_040517.M
    SERIES_040517_CP.TXT
    SAUDE_O10N0505.M
    SERIES_040517.txt
    RVSP_080517.M
    SERIES_080517_CP.TXT

我们可以看到,前面有几组数字,但我要的是第一组四个数字。

我该怎么做?

我期望从这个 table 得到的结果是:

    0405
    0405
    0505
    0405
    0805
    0805

我尝试使用 PADINDEX,但它不起作用

"PADINDEX" 你可能是指 PATINDEX;使用此函数,您可以找到字符串中某个模式第一次出现的索引,这可以帮助您提取前四位连续数字:

SELECT (case when (PATINDEX('%[0-9][0-9][0-9][0-9]%', a)=0) then NULL else substring(a,PATINDEX('%[0-9][0-9][0-9][0-9]%', a),4) end) as digits
FROM (VALUES ('RVSP_040517.M'), ('SERIES_040517_CP.TXT'), ('SAUDE_O10N0505.M'), ('NO_4_DIGITS')) AS MyTable(a)