使用mysql和正则表达式模式转换和提取行
如何从数据库中提取转换后的值使用mysql和正则表达式模式转换和提取行,mysql,Mysql,如何从数据库中提取转换后的值 SELECT name FROM clients LIMIT 1; 它将列出:“13的汽车” 但我想展示的是“13SAUTOMOTORS”,只列出字母和数字,没有空格 服务器类型:Percona服务器服务器版本:5.6.40-84.0-log-Percona 服务器(GPL),84.0版,修订版47234b3协议版本:10 较新版本(MySQL 8和MariaDB 10+)支持REGEXP\u REPLACE()函数 SELECT regexp_replace(n
SELECT name FROM clients LIMIT 1;
它将列出:“13的汽车”
但我想展示的是“13SAUTOMOTORS”,只列出字母和数字,没有空格
服务器类型:Percona服务器服务器版本:5.6.40-84.0-log-Percona 服务器(GPL),84.0版,修订版47234b3协议版本:10 较新版本(MySQL 8和MariaDB 10+)支持
REGEXP\u REPLACE()
函数
SELECT regexp_replace(name, '[^\\d\\w]', '') as converted_name
FROM clients
将用空字符串替换所有非数字和非单词字符
如果需要大写的结果,请使用UPPER()
如果您的版本不支持<代码> ReXExpReReplication()/<代码>,请考虑在应用程序语言中进行转换。因为您已经用
mysqli
标记了您的问题,所以我假设您正在使用PHP。然后您可以使用和:
在MySQL的旧版本中,您可以为此使用一系列嵌套的替换操作
SELECT UPPER(REPLACE(REPLACE('3''s Automotors', ' ',''),'''','')) val
这有点令人讨厌,因为您需要对每个可能要删除的字符进行嵌套替换,但它可以工作
请注意,在MySQL查询中,必须将字符串常量中的单引号字符
”
加倍。因此,'''
将单个字符'
表示为字符串常量 您使用哪个版本的MySQL服务器?服务器类型:Percona服务器版本:5.6.40-84.0-log-Percona服务器(GPL),84.0版,47234b3版本协议版本:10#1305-函数mydbname.regexp_replace不存在
$row['converted_name'] = preg_replace('/[^\\d\\w]/', '', $row['name']);
$row['converted_name'] = strtoupper($row['converted_name']);
SELECT UPPER(REPLACE(REPLACE('3''s Automotors', ' ',''),'''','')) val