我的字符串如下:
'NAME NAME NAME 400ML NAME CODE'
我需要确认 ML ,向左走,抓住前面的所有数字,然后先停下来 space 得到:
ML
space
400ML
当前代码:
SUBSTR(FIELD,CHARINDEX('ML',FIELD), 2)
3npbholx1#
我建议使用
regexp_substr(field, '\\d+\\s*ML\\b')
这个正则表达式将确保 ML 作为一个完整的单词匹配,如果数字和 ML ,它们也将匹配。查看regex演示。正则表达式详细信息 \d+ -一个或多个数字 \s* -0个或多个空格 ML -一根绳子ML \b -一个词的边界。
\d+
\s*
\b
pxy2qtax2#
提取数字 ML 作为后缀使用
select regexp_substr(field, '[0-9]+ML')
解释
NODE EXPLANATION-------------------------------------------------------------------------------- [0-9]+ any character of: '0' to '9' (1 or more times (matching the most amount possible))-------------------------------------------------------------------------------- ML 'ML'
NODE EXPLANATION
--------------------------------------------------------------------------------
[0-9]+ any character of: '0' to '9' (1 or more
times (matching the most amount possible))
ML 'ML'
lh80um4z3#
你可以用 regexp_substr() :
regexp_substr()
select regexp_substr(field, '[^ ]+ML')
或者对于特定的字母数字字符:
select regexp_substr(field, '[a-zA-Z0-9]+ML')
如果雪花不贪婪(这似乎不太可能,但可能),那么您可以:
select trim(regexp_substr(' ' || field, ' [a-zA-Z0-9]*ML'))
3条答案
按热度按时间3npbholx1#
我建议使用
这个正则表达式将确保
ML
作为一个完整的单词匹配,如果数字和ML
,它们也将匹配。查看regex演示。
正则表达式详细信息
\d+
-一个或多个数字\s*
-0个或多个空格ML
-一根绳子ML
\b
-一个词的边界。pxy2qtax2#
提取数字
ML
作为后缀使用解释
lh80um4z3#
你可以用
regexp_substr()
:或者对于特定的字母数字字符:
如果雪花不贪婪(这似乎不太可能,但可能),那么您可以: