如何在数据框中筛选含特定子串的行?现有SQL写法失效
正确筛选包含特定子串的SQL语句
你之前写的SELECT * from MailList where 'ada' in email无法生效,是因为IN运算符的作用是判断目标值是否属于一组离散的固定值(比如WHERE email IN ('a@test.com', 'b@test.com')),不能用来检测字符串中是否包含某个子串。
要筛选出email列中包含ada的所有行,推荐以下几种方法:
通用SQL写法(几乎所有数据库都支持):
使用LIKE配合通配符%,%代表任意长度的任意字符(包括空字符):SELECT * FROM MailList WHERE email LIKE '%ada%';部分数据库的扩展写法:
- MySQL/MariaDB 可使用正则匹配:
SELECT * FROM MailList WHERE email REGEXP 'ada'; - PostgreSQL 可使用
~正则运算符:SELECT * FROM MailList WHERE email ~ 'ada'; - SQL Server 若已创建全文索引,可使用全文搜索:
SELECT * FROM MailList WHERE CONTAINS(email, 'ada');
- MySQL/MariaDB 可使用正则匹配:
内容的提问来源于stack exchange,提问作者user19667022
相关产品推荐
相关产品推荐

