MySQL 动态条件按列的值?

  • 本文关键字:动态 条件 MySQL 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-英语不是我的母语,所以我希望我能使自己清晰。

您的病情错误,您应该使用AND,而不是OR

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

,由于有场景(s)您的prefs是使用通配符的序列化数据,可以解决

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

您的将看起来像这样

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

最新更新