mysql 查询payment_method字段是否存在"4";(例如payment_method=“3,11,12,17,18,23,24”,则该数据不存在“4”存在的是"24")
时间: 2024-10-18 15:24:35 浏览: 21
在MySQL中,你可以使用`INSTR()`函数来检查某个值是否存在于一个字符串数组中。不过,直接在SQL查询中检查一个逗号分隔的字符串并不直观,因为这不是标准的数据库操作。通常需要先将字符串分割成数组,然后进行比较。这里我们可以假设有一个存储了支付方式ID的列`payment_method_array`,它是一个JSON类型的字段,可以存储这种分隔后的列表。
如果你的数据已经按照这种方式存储,你可以这样做:
```sql
SELECT * FROM your_table
WHERE JSON_EXTRACT(payment_method_array, '$[*]') NOT IN ('4');
```
如果`payment_method_array`是字符串形式的逗号分隔,你需要先将其转换为临时表或数组:
```sql
CREATE TEMPORARY TABLE temp_payment AS
SELECT SPLIT_STR(payment_method, ',', NULL) AS payment_ids
FROM your_table;
SELECT * FROM your_table t
LEFT JOIN temp_payment p ON t.payment_method = GROUP_CONCAT(p.payment_ids ORDER BY p.payment_ids SEPARATOR ',')
WHERE p.payment_ids IS NULL OR p.payment_ids NOT LIKE '%,4,%';
```
在这里,我们使用了`SPLIT_STR`(如果是MySQL 5.7以上版本)或`GROUP_CONCAT`和`LIKE`来查找不在`4`后面的支付方式。
请注意,上述示例依赖于你使用的MySQL版本及其支持的功能,如果不是JSON字段,或者你的数据库不支持某些函数,可能需要调整。
阅读全文