使用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