检查 table 列中的变量数组时使用哪个 mySQL 运算符
Which mySQL operator to use when checking for array of variables in a table column
我有一个包含字符串的 table 列。该字符串的长度根据存储在其中的变量数量而变化,但始终遵循相同的模式。该字符串由 Wordpress 插件动态生成,我对它的存储方式没有影响。这是:
a:3:{i:0;s:3:"509";i:1;s:3:"511";i:2;s:3:"514";}
用户可以 select 来自 HTML 表单中多个 select 字段的任意数量的变量。我将这些存储在会话中:
Array ( [0] => 511 [1] => 514 )
会话必须包含至少一个值,但可以包含更多值。
如何在我的 table 列中搜索 511 或 514 等(存储在我的会话数组中)的出现?
到目前为止,我已经尝试过 LIKE、IN 和 EXISTS,但 none 可以正常工作。
请注意,我使用的是 WP_query (Wordpress),所以我唯一可用的运算符是:
'=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS' and 'NOT EXISTS'
为了以防万一有人需要它,这是我正在使用的 WP_query meta_query 数组:
array(
'key' => 'teacher',
'value' => $_SESSION['selected_teachers'],
'compare' => 'IN'
)
非常感谢!
我想您可以在这里找到问题的答案:https://wordpress.stackexchange.com/questions/18703/wp-query-with-post-title-like-something
[抱歉写了一个答案,但我还不能发表评论]
尝试生成 WP_query 的 meta_query
$meta_queries = array( 'relation' => 'OR');
foreach($_SESSION['selected_teachers'] as $v) {
array_push($meta_queries,
array(
'key' => 'teacher',
'value' => ':"'.$v.'";',
'compare' => 'LIKE'
));
}
这将使用 'WHERE ... LIKE %...%' 生成 mysql 查询,它会产生一些性能问题。
我有一个包含字符串的 table 列。该字符串的长度根据存储在其中的变量数量而变化,但始终遵循相同的模式。该字符串由 Wordpress 插件动态生成,我对它的存储方式没有影响。这是:
a:3:{i:0;s:3:"509";i:1;s:3:"511";i:2;s:3:"514";}
用户可以 select 来自 HTML 表单中多个 select 字段的任意数量的变量。我将这些存储在会话中:
Array ( [0] => 511 [1] => 514 )
会话必须包含至少一个值,但可以包含更多值。
如何在我的 table 列中搜索 511 或 514 等(存储在我的会话数组中)的出现?
到目前为止,我已经尝试过 LIKE、IN 和 EXISTS,但 none 可以正常工作。
请注意,我使用的是 WP_query (Wordpress),所以我唯一可用的运算符是:
'=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS' and 'NOT EXISTS'
为了以防万一有人需要它,这是我正在使用的 WP_query meta_query 数组:
array(
'key' => 'teacher',
'value' => $_SESSION['selected_teachers'],
'compare' => 'IN'
)
非常感谢!
我想您可以在这里找到问题的答案:https://wordpress.stackexchange.com/questions/18703/wp-query-with-post-title-like-something
[抱歉写了一个答案,但我还不能发表评论]
尝试生成 WP_query 的 meta_query
$meta_queries = array( 'relation' => 'OR');
foreach($_SESSION['selected_teachers'] as $v) {
array_push($meta_queries,
array(
'key' => 'teacher',
'value' => ':"'.$v.'";',
'compare' => 'LIKE'
));
}
这将使用 'WHERE ... LIKE %...%' 生成 mysql 查询,它会产生一些性能问题。