mysql 正则替换的方法

给力地板油 2009-07-17 01:50:14
求 mysql 正则替换的方法

假如我有一个字段中的内容是 111-(444)-789

替换后的结果是 ***-(***)-***

如果是数字就替换为*其他不变的输出。

我想用 mysql实现。
...全文
855 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CN_SQL 2010-09-30
  • 打赏
  • 举报
回复
SQLSERVER,MYSQL目前都没有直接的正则替换函数,不过MYSQL有正则查找
如果你的数据象你这样有规律的话,你可以通过变通使用查找和截取函数来实现
技术传播 2010-03-19
  • 打赏
  • 举报
回复
replace不支持正则。这个我有点困惑
给力地板油 2009-07-17
  • 打赏
  • 举报
回复
楼上这位朋友 我明白了 我想要的就是各种思路 谢谢
ACMAIN_CHM 2009-07-17
  • 打赏
  • 举报
回复

select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(@x,'0','*'),'1','*'),'2','*'),'3','*'),'4','*'),'5','*'),'6','*'),'7','*'),'8','*'),'9','*') as nx;

mysql> set @x='111-(444)-789';
Query OK, 0 rows affected (0.00 sec)

mysql> select replace(replace(replace(replace(replace(replace(replace(replace(re
place(replace(@x,'0','*'),'1','*'),'2','*'),'3','*'),'4','*'),'5','*'),'6','*'),
'7','*'),'8','*'),'9','*') as nx;
+---------------+
| nx |
+---------------+
| ***-(***)-*** |
+---------------+
1 row in set (0.00 sec)

mysql>


ACMAIN_CHM 2009-07-17
  • 打赏
  • 举报
回复

首先MYSQL目前还不支持正则替换,只支持正则查找。

但应该可以通过一些字符串函数来实现。

建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。这样我可以在自己本机帮你做个实验。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧