我有一个 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 demo .
详细信息
*
- 0+ 个空格[0-9]+
- 1+ 位数字([.,][0-9]+)?
- 可选的逗号或句点序列,后跟 1 个以上数字(/[0-9]+([.,][0-9]+)?)?
- 由/
和 1 组成的可选序列+ 数字,可选后跟.
或,
和 1+ 数字*
- 0+ 个空格
关于mysql - 使用 SQL REGEXP 忽略数字并仅获取字符串和 '/',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250535/