我有一个 MySQL 表,其中有一列 typevarchar(255)
它保存以下格式的数据:
400 mg
50/12,5 mg/ml
20 mikrog
500 mg/400 IU
60 mikrog/15 mikrog
在某些情况下,我需要忽略数字并仅提取字符串,包括/
,因此上面的数据如下所示:
mg
mg/ml
mikrog
mg/IU
mikrog/mikrog
我尝试使用REGEXP
像这样:
SELECT DISTINCT REGEXP_SUBSTR(column, '[a-z]') FROM db.table;
但是,这只是给了我一堆字母,就像这样
m
I
U
a
g
k
有什么办法可以使用吗REGEXP
提取任意长度的字符串,就像在我的例子中一样,需要提取的字符串具有不同的长度,例如,在mg
, it's 2
, 的情况下mikrog
, it's 6
。另外,在某些情况下,我需要包含角色/
.
您可以删除这些数字以获得您需要的内容:
REGEXP_REPLACE(column, ' *[0-9]+([.,][0-9]+)?(/[0-9]+([.,][0-9]+)?)? *', '')
See the 正则表达式演示 https://regex101.com/r/rcPnVM/1.
Details
-
*
- 0+空格
-
[0-9]+
- 1+ 位数字
-
([.,][0-9]+)?
- 可选的逗号或句点序列,后跟 1 个以上数字
-
(/[0-9]+([.,][0-9]+)?)?
- 一个可选的序列/
然后 1+ 位数字后跟(可选).
or ,
和 1+ 位数字
-
*
- 0+空格
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)