MySQL动态条件按列的值?

时间:2016-12-26 07:48:23

标签: php mysql

鉴于我不确定存储的值是序列化数组还是简单整数的情况,有没有办法在应用正确的条件之前进行检查?我举个例子:

user_id | prefs
----------------
1       | 1
2       | {serialized_php_array}

现在我想查看prefs中没有特定值的位置,所以我需要这样的内容:

SELECT * FROM table WHERE prefs NOT LIKE ":value;" OR prefs != "value"

第一个条件排除了序列化数组值,第二个条件排除了简单整数。

问题是它们不能在相同的条件下共存,我需要询问MySQL是否序列化了值,然后才进行"NOT LIKE :value;"条件。有没有办法实现这个目标?

P.S - 英语不是我的母语,所以我希望我能说清楚。

2 个答案:

答案 0 :(得分:2)

您的情况有误,您应该使用AND,而不是OR

SELECT * FROM table 
WHERE prefs NOT LIKE ":value;" AND prefs != "value"

答案 1 :(得分:0)

由于有一些场景,你的prefs是一个使用外卡的序列化数据会解决它

prefs NOT LIKE CONCAT("%", ":value;", "%")

你的意思应该是这样的

SELECT * FROM table where prefs NOT LIKE CONCAT("%", ":value;", "%") AND prefs != "value"