MySQL LIKE 运算符的行为类似于 = 运算符

标签 mysql sql-like wordpress

看起来 MySQL 的 LIKE 运算符的行为类似于 = 运算符。

以下 MySQL 查询返回预期结果(1 项):

$meta_key = '_locality';
$meta_value = 'The Hague';
$post_ids = $wpdb->get_col( $wpdb->prepare( 
  "
  SELECT      post_id
  FROM        $wpdb->postmeta
  WHERE       meta_key = %s
              AND meta_value LIKE %s
  ", 
  $meta_key, 
  $meta_value
) );

但是以下仅包含原始 meta_value 的一部分,返回一个空数组:

$meta_key = '_locality';
$meta_value = 'The';
$post_ids = $wpdb->get_col( $wpdb->prepare( 
  "
  SELECT      post_id
  FROM        $wpdb->postmeta
  WHERE       meta_key = %s
              AND meta_value LIKE %s
  ", 
  $meta_key, 
  $meta_value
) );

我在这里做错了什么?

最佳答案

请仔细阅读mysql模式匹配语法:http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html 。您因 LIKE 匹配而丢失 '%':

$meta_key = '_locality';
$meta_value = '%The Hague%';
$post_ids = $wpdb->get_col( $wpdb->prepare( 
  "
  SELECT      post_id
  FROM        $wpdb->postmeta
  WHERE       meta_key = %s
              AND meta_value LIKE %s
  ", 
  $meta_key, 
  $meta_value
) );

关于MySQL LIKE 运算符的行为类似于 = 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276489/

相关文章:

php - 在 html 表中显示 mysql 行

MySQL LOAD DATA LOCAL INFILE 当第一行被 "包围时什么都不做

资源管理器中的 CSS 中断

wordpress - 更改 WordPress 折叠菜单名称

php - 左连接显示 2 个结果,而本应为 0

mysql - 将 LIKE %..% 与 MySQL 中的字段值一起使用

mysql - 使用 LIKE MySQL 从两个表中提取信息

MySQL 检查带有类别的行是否存在

twitter-bootstrap - 如何在 Wordpress 插件开发中包含 Bootstrap ?

java - JDBC 规范是否定义了如果您对列名冲突的查询调用 `ResultSet.getObject(String)` 会发生什么情况?