我有一个带有类型列的MySQL表,该表以varchar(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
,它是2
,在以下情况下mikrog
,它的6
。另外,在某些情况下,我需要包含字符/
。
您可以删除数字以获得所需的信息:
REGEXP_REPLACE(column, ' *[0-9]+([.,][0-9]+)?(/[0-9]+([.,][0-9]+)?)? *', '')
请参阅regex演示。
细节
*
-0+个空格[0-9]+
-1个以上的数字([.,][0-9]+)?
-逗号或句点的可选序列,后跟1个数字(/[0-9]+([.,][0-9]+)?)?
-可选的a序列,/
然后是1+个数字,然后可选地是.
or或,
and 1+个数字 *
-0+个空格本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句