MySQL 从字符串中删除不需要的字符

柔情只为你懂 2022-12-08 05:16 191阅读 0赞

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本

一.需求

将emp表中的元音字母 AEIOU都去除掉

二.解决方案

通过MySQL的replace函数进行多次替换可以解决这个问题
也可以通过MySQL的正则表达式来处理

代码:

  1. select ename,replace(replace(replace(replace(replace(ename,'A',''),'E',''),'I',''),'O',''),'U','') as new_name from emp;
  2. select ename,regexp_replace(ename,'[AEIOU]','') as new_name from emp;

测试记录:

  1. mysql> select ename,replace(replace(replace(replace(replace(ename,'A',''),'E',''),'I',''),'O',''),'U','') as new_name from emp;
  2. +--------+----------+
  3. | ename | new_name |
  4. +--------+----------+
  5. | SMITH | SMTH |
  6. | ALLEN | LLN |
  7. | WARD | WRD |
  8. | JONES | JNS |
  9. | MARTIN | MRTN |
  10. | BLAKE | BLK |
  11. | CLARK | CLRK |
  12. | SCOTT | SCTT |
  13. | KING | KNG |
  14. | TURNER | TRNR |
  15. | ADAMS | DMS |
  16. | JAMES | JMS |
  17. | FORD | FRD |
  18. | MILLER | MLLR |
  19. +--------+----------+
  20. 14 rows in set (0.00 sec)
  21. mysql> select ename,regexp_replace(ename,'[AEIOU]') as new_name from emp;
  22. ERROR 1582 (42000): Incorrect parameter count in the call to native function 'regexp_replace'
  23. mysql>
  24. mysql>
  25. mysql>
  26. mysql> select ename,regexp_replace(ename,'[AEIOU]','') as new_name from emp;
  27. +--------+----------+
  28. | ename | new_name |
  29. +--------+----------+
  30. | SMITH | SMTH |
  31. | ALLEN | LLN |
  32. | WARD | WRD |
  33. | JONES | JNS |
  34. | MARTIN | MRTN |
  35. | BLAKE | BLK |
  36. | CLARK | CLRK |
  37. | SCOTT | SCTT |
  38. | KING | KNG |
  39. | TURNER | TRNR |
  40. | ADAMS | DMS |
  41. | JAMES | JMS |
  42. | FORD | FRD |
  43. | MILLER | MLLR |
  44. +--------+----------+
  45. 14 rows in set (0.00 sec)
  46. mysql>

发表评论

表情:
评论列表 (有 0 条评论,191人围观)

还没有评论,来说两句吧...

相关阅读