如何筛选列值含前导/尾随空格(含空值)的数据库行
筛选包含前后空格或空值的行的SQL解决方案
要找出urls表中url列存在前导空格、尾随空格(任意数量)或为空值的行,你可以用以下几种方式实现:
通用写法(适配多数数据库)
利用TRIM()函数对比原字段,结合空值判断:
SELECT * FROM urls WHERE url IS NULL OR url = '' OR TRIM(url) != url;
TRIM(url)会移除字段前后的所有空格,若处理后的值和原url不等,说明原字段存在前导或尾随空格url IS NULL匹配字段为NULL的情况,url = ''匹配空字符串的情况
正则表达式写法(针对支持正则的数据库)
如果你的数据库支持正则表达式(如MySQL、PostgreSQL),可以直接匹配前后空格:
MySQL版本
SELECT * FROM urls WHERE url IS NULL OR url = '' OR url REGEXP '^\\s+|\\s+$';
PostgreSQL版本
SELECT * FROM urls WHERE url IS NULL OR url = '' OR url ~ '^\s+|\s+$';
正则表达式说明:^\s+匹配字段开头的一个或多个空格,\s+$匹配字段结尾的一个或多个空格,满足任一条件即被筛选。
你之前尝试的SQL只是将url用引号包裹后输出,没有添加筛选逻辑,替换成上面的语句即可实现需求。
内容的提问来源于stack exchange,提问作者user352290
相关产品推荐
相关产品推荐

