【问题标题】:How to find exact match in MySQL version 8.x如何在 MySQL 8.x 版本中找到完全匹配
【发布时间】:2020-01-30 05:35:39
【问题描述】:

我正在尝试使用以下语法从数据库中找到一个确切的单词。

SELECT count(*) as total FROM node_field_data node LEFT JOIN book book ON node.nid = book.nid LEFT JOIN node__body body ON node.nid = body.entity_id LEFT JOIN node__field_rule_number rule_number ON node.nid = rule_number.entity_id LEFT JOIN node__field_effective_date effective_date ON node.nid = effective_date.entity_id LEFT JOIN node__field_end_date end_date ON node.nid = end_date.entity_id WHERE ( node.title REGEXP :text OR body.body_value REGEXP :text OR rule_number.field_rule_number_value REGEXP :text ); Array ( [:text] => [[:<:]]law[[:>:]] )

它给了我以下错误

SQLSTATE[HY000]: 一般错误: 3685 Illegal argument to a regular 表达。

谁能告诉我我在哪里犯了错误,下面是我试图找到完全匹配的代码

if ($exact) {
            $text = "";
            foreach($keywords as $keyword) {
                $text = $text . preg_quote($keyword) . " ";
            }
            $text = preg_replace('/\s+$/', '', $text);
            $params[':text'] = "[[:<:]]".$text."[[:>:]]";

        }

【问题讨论】:

  • 请在此错误后面包含完整的 PHP 代码。
  • @TimBiegeleisen 我已添加代码,请您检查并告诉我
  • 您解决了吗?您的确切版本的 MySQL 是什么? 8.?.?

标签: mysql-8.0


【解决方案1】:

检查这个 https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-compatibility

[[:<: mysql8>

select * from Table where field regexp '\\bmatch1|match2\\b';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多