簡體   English   中英

MySQL REGEXP完全相同的字符串

[英]Mysql REGEXP exact same string

我正在嘗試使用完全相同的字符串獲取所有這些結果,但是下面的查詢返回的結果與所有具有Cars的字符串匹配,但我只需要與Cars完全匹配的結果

SELECT i.name
FROM table_name i
WHERE i.name REGEXP '[[:<:]]Cars[[:>:]]'

我以為[[:<:]] [[:>:]]會將結果限制為具有精確值

編輯:

我沒有提到我的不好,上面只是一個例子,不僅僅是汽車,還會有多個字符串,例如

SELECT i.name
    FROM table_name i
    WHERE i.name REGEXP '[[:<:]]Cars[[:>:]].[[:<:]]Movies[[:>:]].[[:<:]]Camping[[:>:]]''

將根據條件匹配多個字符串。 我正在嘗試Regexp,因為否則我將必須為所有字符串顯式聲明LIKE,而無需%。

我使用REGEXP的唯一原因是因為我可以通過串聯一次傳遞我的字符串,就我所知,使用LIKE是不可能的

My table

**ColumnName**
Cars
Racing Cars
Movies
Romantic Movies

通過使用上面的查詢,我可以獲得與汽車和電影有關的所有結果,相反,我只需要完全匹配

僅限汽車和電影

當您需要完全匹配時,為什么要使用正則表達式。 只需嘗試一下

SELECT i.name
FROM table_name i
WHERE i.name = 'CARS'

要么

SELECT i.name
FROM table_name i
WHERE i.name like '%CARS%'

根據您的字符串和樣式刪除左或右百搭字符%

編輯:-

因此,根據您的修改,如果只想匹配汽車和電影,則可以這樣編寫:

SELECT i.name
FROM table_name i
WHERE i.name IN ('CARS','MOVIES')

@Deepanshu,我看到您使用了REGEXP,也許是因為您的實現限制了您將REGEXP表達式中使用的整個字符串作為參數提供給函數的方式。 [[:<:]][[:>:]]匹配某個匹配單詞的開頭和結尾,而不匹配整個字符串。 因此,您要分別使用^$ ,將使用的確切查詢是:

SELECT i.name
FROM table_name i
WHERE i.name REGEXP '(^Cars$)|(^Movies$)|(^Camping$)'

但是,由於我注意到很多人一直在使用mySQL REGEXP進行直接相等比較,所以這不是一個好習慣,因此我建議更改您的實現,使其使用LIKE ,equality或類似的東西。 您還可以使用編程語言動態生成LIKE語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM