2012-03-04 76 views
6

我有一個MySQL 5表一個char場舉行MySQL的選擇使用通配符(但通配符域)

DOG 
DOUG 
CAT 
MOUSE 

現在我要選擇這個領域,找到任何行,其中該字段的字符串中存在如「DOGGY」。 (這與您通常使用通配符的方式相反)。所以我想一個選擇是這樣的: SELECT FROM表,其中字段是「狗」

子串這可能嗎?

+0

你能解釋更多你想要做什麼? – menacingly 2012-03-04 03:10:00

+0

具體來說,你是否想查找字段中有「小狗」子字符串的行(即文本中包含「小狗」中的某些字母,但不一定全部是這些字母)?或者你是否想查找「小狗」是該字段子字符串的行(即該字段是否包含「狗狗」一詞以及其他可能的文本)? 在第一種情況下,您的查詢將匹配具有「dog」,「dogg」和「gy」等文本的行。 在第二種情況下,您的查詢會將行與文本相匹配,例如「hello doggy」和「那裏有什麼狗狗?」 – octern 2012-03-04 03:16:34

+0

我想查找字段中包含我正在搜索的單詞的子字符串的行。所以在上面的例子中,我的select會在字段中返回帶有「DOG」的行。 – 2012-03-04 03:18:53

回答

5

你應該能夠使用LOCATE()來實現這一目標:

SELECT * FROM MyTable WHERE LOCATE(MyField, 'DOGGY') != 0; 
+1

Downvoter,隨時發表評論。 – 2012-03-04 03:18:57

+2

剛剛玩過這個功能,似乎按要求工作/ upvote – Ing 2012-03-04 03:39:43

14
select * from mytable where 'doggy' like concat('%',mycol,'%') 
+0

\ *頭腦風暴\ * - 我一直都在使用LIKE,但是我從來沒有想過要顛倒這樣的參數,而且我必須自己嘗試一下我確信它可以工作。我想我只是一個小菜鳥,但我認爲這是一個非常棒的答案。 – octern 2012-03-04 07:30:09