メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

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

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

development
mysql

やりたいこと: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 "^[^ ]+ [^ ]+$"

     

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

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)