MySQL中如何筛选Sample表Claims列仅含BSA、TLS、SSL的数据?
MySQL筛选Sample表中符合条件的Claims数据
已知Sample表的Claims列数据均以Payment开头,以下分两种常见场景给出筛选SQL:
场景1:Claims值为Payment BSA/Payment TLS/Payment SSL这类固定格式
直接用IN精准匹配:
SELECT * FROM Sample WHERE Claims IN ('Payment BSA', 'Payment TLS', 'Payment SSL');
如果允许值末尾有额外字符(比如Payment BSA v2),用LIKE模糊匹配:
SELECT * FROM Sample WHERE Claims LIKE 'Payment BSA%' OR Claims LIKE 'Payment TLS%' OR Claims LIKE 'Payment SSL%';
场景2:Claims值带分隔符(如Payment - BSA、Payment: TLS)
用正则表达式匹配开头为Payment且包含目标标识的记录:
SELECT * FROM Sample WHERE Claims REGEXP '^Payment.*(BSA|TLS|SSL)$';
忽略大小写的处理
如果数据存在大小写不一致的情况,可通过LOWER()统一转换后匹配:
SELECT * FROM Sample WHERE LOWER(Claims) IN ('payment bsa', 'payment tls', 'payment ssl');
内容的提问来源于stack exchange,提问作者Karuna
相关产品推荐
相关产品推荐

