如何用REGEX或其他方法优化嵌套REPLACE的SQL字符替换语句
SQL优化方案
你可以用正则替换替代多层嵌套的REPLACE,代码可读性和可维护性会大幅提升,新增规则时也不用再加嵌套层级。不同数据库的正则函数语法略有差异,下面给出主流数据库的实现:
MySQL 8.0+/MariaDB 10.0+ 版本
SELECT LOWER( REGEXP_REPLACE( -- 一次性匹配所有需要删除的字符/字符组合,替换为空 REGEXP_REPLACE(SCHOOL_NAME, '''|\\.| -|\\. ', ''), -- 将连续空格替换为单个短横线 '\\s+', '-' ) ) AS formatted_school_name FROM your_table;
PostgreSQL 版本
SELECT LOWER( REGEXP_REPLACE( REGEXP_REPLACE(SCHOOL_NAME, '''|\.| -|\. ', '', 'g'), '\s+', '-', 'g' ) ) AS formatted_school_name FROM your_table;
效果验证
上述代码匹配了你要求的所有转换规则,测试样本和输出完全符合预期:
- 输入
James valley court ad→ 输出james-valley-court-ad - 输入
Saint's lee park school→ 输出saints-lee-park-school - 输入
Harrison lodge - and hospital→ 输出harrison-lodge-and-hospital
内容的提问来源于stack exchange,提问作者Sun Shyne
相关产品推荐
相关产品推荐

