在特定字符串之前隔离字符串

x3naxklr  于 2021-07-29  发布在  Java
关注(0)|答案(3)|浏览(288)

我的字符串如下:

  1. 'NAME NAME NAME 400ML NAME CODE'

我需要确认 ML ,向左走,抓住前面的所有数字,然后先停下来 space 得到:

  1. 400ML

当前代码:

  1. SUBSTR(FIELD,CHARINDEX('ML',FIELD), 2)
3npbholx

3npbholx1#

我建议使用

  1. regexp_substr(field, '\\d+\\s*ML\\b')

这个正则表达式将确保 ML 作为一个完整的单词匹配,如果数字和 ML ,它们也将匹配。
查看regex演示。
正则表达式详细信息 \d+ -一个或多个数字 \s* -0个或多个空格 ML -一根绳子
ML \b -一个词的边界。

pxy2qtax

pxy2qtax2#

提取数字 ML 作为后缀使用

  1. select regexp_substr(field, '[0-9]+ML')

解释

  1. NODE EXPLANATION
  2. --------------------------------------------------------------------------------
  3. [0-9]+ any character of: '0' to '9' (1 or more
  4. times (matching the most amount possible))
  5. --------------------------------------------------------------------------------
  6. ML 'ML'
lh80um4z

lh80um4z3#

你可以用 regexp_substr() :

  1. select regexp_substr(field, '[^ ]+ML')

或者对于特定的字母数字字符:

  1. select regexp_substr(field, '[a-zA-Z0-9]+ML')

如果雪花不贪婪(这似乎不太可能,但可能),那么您可以:

  1. select trim(regexp_substr(' ' || field, ' [a-zA-Z0-9]*ML'))

相关问题