SQL Server如何查询列值仅包含数字0的记录
全0字符串匹配SQL实现方法
原有查询语句Select * from Sample.Column_Name where Column_Name like '[0]+'不生效的核心原因是:SQL 原生LIKE运算符不支持正则表达式中的+量词规则,+在LIKE语法中仅会被识别为普通字符做匹配,因此无法实现「匹配1个及以上0」的逻辑。
全数据库通用实现方案
这个方案适配所有主流关系型数据库,逻辑是将字段值中的所有0替换为空,判断替换后是否为空白字符串即可:
SELECT * FROM Sample.Column_Name WHERE REPLACE(Column_Name, '0', '') = '';
不同数据库正则匹配方案
如果你的数据库支持正则查询,也可以用对应正则函数实现,性能更优:
- MySQL / MariaDB:
SELECT * FROM Sample.Column_Name WHERE Column_Name REGEXP '^0+$';
- PostgreSQL:
SELECT * FROM Sample.Column_Name WHERE Column_Name ~ '^0+$';
- SQL Server:
SELECT * FROM Sample.Column_Name WHERE Column_Name NOT LIKE '%[^0]%';
- Oracle:
SELECT * FROM Sample.Column_Name WHERE REGEXP_LIKE(Column_Name, '^0+$');
内容的提问来源于stack exchange,提问作者Aishwarya.R
相关产品推荐
相关产品推荐

