2016-10-03 55 views
1

在MySQL表我與MySQL的:正則表達式和通配符

無效領域的多個文本輸入後:12月2十九時40分51秒2016 GMT

什麼我想do是使用REGEXP來查找這些條目並忽略小於Dec 31 23:59:59 2016 GMT的任何內容。什麼是最好的方式去做這件事?

示例:SEARCH_STRING其中TABLE_COLUMN REGEXP「無效之後:等於等於」小於12月31日23:59:59 2016 GMT。

我知道這個例子有一點缺乏正確的語法,但我相信你得到了我所得到的東西的要點。我如何獲取設定的日期,將它與隱藏在較大文本的細節中的特定字符串中列出的內容進行比較,並且忽略now()和預設時間之間的任何事情是一年的結尾?

+1

到目前爲止,我已經試過REGEXP「無效後:」剛剛拉上了正確的數據集,但正是我缺少的是如何應對「Dec 02 19:40:51 2016 GMT」日期字段在「無效之後」行忽略小於Dec 31 23:59:59 2016 GMT的所有內容。實際上,我要求一次完成多項任務。首先隔離文本中的「無效之後」行。然後獲取日期,該日期在「無效之後」行之後,並將其與預定義的日期進行比較。也許更簡單的需要像REGEXP NOT「無效之後:* 2016 GMT」但你能設置一個REGEXP通配符嗎? – Alby

+0

克里斯謝謝。 *(20([0] [0-9] | 1 [0-6])| 1 [89] [0-9] {2})格林尼治標準時間「這正是我需要的 – Alby

回答

0

我可能會標準化DB,所以列只是一個日期,那麼你可以使用標準比較函數(<=)。或者,您可以使用匹配4年整數的正則表達式。喜歡的東西:

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

在MySQL中它會被用作:

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

這裏是另一種方式來做到這一點:

YEAR(STR_TO_DATE(COLUMN, 'Not Valid After: %b %d %H:%i:%s %Y GMT')) < 2017