You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选列值包含全部元音字母的SQL数据行?有无更优实现方案?

筛选包含全部元音字母的数据行的优化方案

你的原LIKE写法兼容性极强,几乎所有SQL数据库都能运行,但确实有更简洁的实现方式,不同数据库的优化写法如下:

1. MySQL/MariaDB(8.0及以上版本)

利用支持Perl兼容正则表达式的REGEXP操作符,通过正向预查确保字符串同时包含所有元音字母:

SELECT str FROM letters
WHERE str REGEXP '^(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u).*$';

2. PostgreSQL

用~操作符匹配正则,语法逻辑和MySQL一致:

SELECT str FROM letters
WHERE str ~ '^(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u).*$';

3. SQL Server

若使用2016及以上版本,可使用PATINDEX替代LIKE(逻辑和原写法一致,部分场景性能略优);若要更简洁的正则写法需开启CLR集成,常用写法如下:

SELECT str FROM letters
WHERE PATINDEX('%a%', str) > 0
  AND PATINDEX('%e%', str) > 0
  AND PATINDEX('%i%', str) > 0
  AND PATINDEX('%o%', str) > 0
  AND PATINDEX('%u%', str) > 0;

方案对比

  • 原LIKE写法:兼容性拉满,所有数据库通用,但代码行数偏多;
  • 正则写法:代码更简洁,但依赖数据库的正则支持,不同数据库语法有细微差异。

最终筛选结果为:education

内容的提问来源于stack exchange,提问作者Learn Hadoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:45:41