2016-10-03 12 views
1

私はのMySQL:MySQLのテーブルの正規表現&ワイルドカード

ない有効なのフィールドを持つ複数のテキストエントリを持っている後:私がしようとしている何を12月2日午後7時40分51秒2016 GMT

REGEXPを使用してこれらのエントリを検索し、Dec 31 23:59:59 2016 GMT未満のものは無視してください。これについて最善の方法は何ですか?

例:SEARCH_STRINGここで、TABLE_COLUMN REGEXPは「有効ではありません:しばらくする」は12月31日23:59:59 2016 GMT未満です。

私はこの例では適切な構文が少し欠けていることを知っていますが、私はあなたが私が得ていることの要点を得ていると確信しています。どのように私は設定された日付を取って、大きなテキストの詳細に埋め込まれた特定の文字列にリストされているものと比較し、now()とプリセット時間の間の何かを無視しますか?

+1

だけで、正しいデータセットをプルアップするために、しかし、私が欠けてることをどのように扱うかであります"Dec 02 19:40:51 2016 GMT"の日付フィールドは、 "Not Valid After"行で12月31日23:59:59 2016 GMT未満のものをすべて無視します。効果的に私は一度に複数のことをすることを求めています。まず、テキストの「Not Valid After」行を分離します。その後、 "Not Valid After"行の後に来る日付を取って、それをあらかじめ定義された日付と比較してください。 REGEXP NOT "Not Valid After:* 2016 GMT"のように簡単なものが必要かもしれませんが、REGEXPワイルドカードを設定できますか? – Alby

+0

クリスありがとう。 *(20([0] [0-9] | 1 [0-6])| 1 [89] [0-9] {2})グリニッジ標準時"それはちょうど私が必要なものだ – Alby

答えて

0

DBを正規化してカラムが日付になったので、標準比較関数(<=)を使用できます。あるいは、4年整数にマッチする正規表現を使用することもできます。何かのように:mysqlの中

Not Valid After .* (20([0][0-9]|1[0-6])|1[0-9]{3}) GMT" 

それは次のように使用することだろう。

COLUMN not REGEXP "Not Valid After .* (20([0][0-9]|1[0-6])|1[0-9]{3}) GMT" 

例:http://sqlfiddle.com/#!9/26b735/4

あなたが時間の経過とともに、1[0-6]を文字クラスを増やす必要があります。来年は1[0-7]です。

+0

誰かが私の質問を投票してくださいできますか?ありがとう – Alby

1

ここでそれを行うための別の方法です:「後は未有効:」これまでのところ、私はREGEXPを試してみた

YEAR(STR_TO_DATE(COLUMN, 'Not Valid After: %b %d %H:%i:%s %Y GMT')) < 2017 
関連する問題