在 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)
我必须使用 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)