Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用SQL REGEXP忽略数字,只获取字符串和'/';_Mysql_Regex_Mysql 8.0 - Fatal编程技术网

Mysql 使用SQL REGEXP忽略数字,只获取字符串和'/';

Mysql 使用SQL REGEXP忽略数字,只获取字符串和'/';,mysql,regex,mysql-8.0,Mysql,Regex,Mysql 8.0,我有一个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 SELECT DISTINCT REGEXP_SUBSTR(column, '[a-z]') FROM db.table; 我试着

我有一个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
SELECT DISTINCT REGEXP_SUBSTR(column, '[a-z]') FROM db.table;
我试着像这样使用
REGEXP

mg
mg/ml
mikrog
mg/IU
mikrog/mikrog
SELECT DISTINCT REGEXP_SUBSTR(column, '[a-z]') FROM db.table;
但是,这只是给了我一堆信,像这样

m
I
U
a
g
k

是否有任何方法可以使用
REGEXP
提取任意长度的字符串,就像在我的例子中,需要提取的字符串的长度是可变的,例如,在
mg
的情况下,它是
2
,在
mikrog
的情况下,它是
6
。此外,在某些情况下,如果要使用regexp,我需要包含字符
/

尝试使用
[a-z]*
仅获取所有字母, 或者
[a-z]*\/[a-z]*
以获得连斜杠


查看并测试一些示例

最简单的方法是使用
instr()
substring()


您可以删除这些号码以获得所需:

REGEXP_REPLACE(column, ' *[0-9]+([.,][0-9]+)?(/[0-9]+([.,][0-9]+)?)? *', '')

详细信息

  • *
    -0+空格
  • [0-9]+
    -1+位
  • ([,][0-9]+)?
    -逗号或句点的可选序列,后跟1+位
  • (/[0-9]+([,][0-9]+)?)
    -一个可选的序列,由一个
    /
    和1+个数字组成,然后可选地后跟
    和1+个数字
  • *
    -0+空格

看来您的数据库版本是8+,不是吗?@BarbarosÖzhan Yes将您的数据存储在应用程序中,而不是SQL中。