テーブルの文字列列から単語を抽出したい。
description
===========================
abc order_id: 2 xxxx yyy aa
mmm order_id: 3 nn kk yw
期待される結果セット
order_id
===========================
2
3
テーブルには最大100行、テキストの長さは最大256文字、列には常に1行がorder_id
存在します。したがって、パフォーマンスは問題ではありません。
Oracleでは、REGEXP_SUBSTR
この問題に使用できます。MySQLでこれをどのように解決しますか?
編集1
私は問題を解決するためにLOCATEとSUBSTRを使用しています。コードは醜いです。コードを書いた10分後、私はそのような醜いコードを書いた男を罵倒しています。
MySQLドキュメントでREGEXP_SUBSTR関数が見つかりませんでした。しかし、私はそれが存在することを望んでいます。
回答:テーブルを最適化できないのはなぜですか?なぜデータがこんなに馬鹿げた形で保存されているのですか?
私が示した例は、私が解決しようとしている問題を示しています。実際のシナリオでは、非同期タスクを実行するためにDBベースのサードパーティのキューイングソフトウェアを使用しています。キューはRubyオブジェクトをテキストとしてシリアル化します。テーブル構造やデータ形式を制御することはできません。キュー内のタスクは繰り返し発生する可能性があります。テストのセットアップでは、データが古くなったために、繰り返し発生するタスクの一部が失敗しています。エラーを防ぐために、これらのタスクを削除する必要があります。このようなエラーは一般的ではないため、正規化されたシャドウテーブルを維持したくありません。