メインコンテンツに移動
ホーム

古松

メインナビゲーション

  • ホーム
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • MySQLの正規表現エラー:Got error 'repetition-operator operand invalid' from regexp

MySQLの正規表現エラー:Got error 'repetition-operator operand invalid' from regexp

やりたいこと:MySQLのクエリに正規表現の最短一致(?)で検索

  • 正規表現で最短一致検索には、はてなマーク(?)が使用します
    • 例:最初のタブ(\t)までのすべての文字をマッチ ➡  ^.+?\t
  • MySQLでも正規表現のマッチングができます:RLIKE/REGEXP
  • 今回の検索例: 空白スペースが一つ入っている英文字列(abc defg)を検索します
    • 正規表現の否定を利用して、空白文字を含まないもの([^ ]+)+ 空白 で検索: [^ ]+? [^ ]+
    • ここで最短一致(?)を使用します(実際に不必要です。なぜかというと、否定表現を使用して、空白の文字がないものだけです)。
      SELECT title
      FROM table_1
      WHERE title RLIKE "^[^ ]+? [^ ]+$"

       

  • ローカルDB(10.1.9-MariaDB)でテストして、問題なく動いていました

エラー:MySQL(5.5.58)ではエラーが発生:Got error 'repetition-operator operand invalid' from regexp

  • 本番環境:MySQL(5.5.58)でSQL文を実行するとエラーが発生しました
    • #1139 - Got error 'repetition-operator operand invalid' from regexp
      MySQL正規表現の最短一致検索エラー
  • MySQLのサーバーバージョンが違いだけでエラーが発生しました

原因:正規表現の最短一致(?)検索が通らない

  • いろいろクエリを変えながら試してみました。問題は正規表現の最短一致(?)検索ができないようです
  • 最短一致をはずして、実行すれば問題なくいけました
    SELECT title 
    FROM table_1 
    WHERE title RLIKE "^[^ ]+ [^ ]+$"

     

    • 最短一致検索のはてなマーク(?)を外せばよくなりました
  • なぜ、最短一致検索できないかは、理由不明です

検索フォーム

カテゴリ別

  • laravel
  • drupal
  • javascript
  • windows
  • html
  • mysql
  • php
  • apache
  • css
  • SEO
  • video
  • wordpress
  • linux
  • python
  • Electron
  • Visual Studio Code

google ads