2013-02-21 46 views
1

我有一個id和一個文本字段。搜索字符串中的單詞以確切匹配/甚至開始時該單詞不起作用

我需要搜索一個完全匹配的單詞,或者以單個mysql查詢字符串中的單詞開頭。

E.g select * from tablename where textfield like "%cam%. 這將返回所有文本ID,哪個凸輪在單個任何地方找到。

但我需要得到可以通過分割單個單詞在句子中查詢的結果。

ID文本

1 Camel_walk. 
2 camel does drink water. 
3 does Camel_store water. 
4 In deset people can find_camel 
5 this will not return 

當我查詢 select * from tablename where textfield like "%camel%. 返回第1,2,3,4

,但我需要得到包括單詞開始駱駝ID

1)select * from tablename where textfield like "Camel%" 
return 1,3 (which is not working for me) 
or even 
2)select * from tablename where textfield like "%Camel" 
return 4 

這兩個查詢不起作用 有人可以幫助

由於

+0

'從表名中選擇id,其中像「%Camel%」'這樣的文本將返回1,3。使用類似運算符的正確(或駱駝)情況會使搜索區分大小寫。一致的情況會使查詢不區分大小寫。 – Fr0zenFyr 2013-02-21 05:56:38

+0

'從表名中選擇id,其中像「%camel」這樣的文本將返回4.在字符串的情況下查看差異。'從表名中選擇id,其中像「%camel%」'這樣的文本將返回1,2,3,4。 '從表名中選擇id,其中像「Camel%」'這樣的文本將返回1.'從表名中選擇id,其中像「camel%」'這樣的文本將返回1,2。 '從表名中選擇id,其中像「camel%」'這樣的文本將返回2. – Fr0zenFyr 2013-02-21 06:07:23

+0

這是基本的SQL。甚至沒有一個稍微複雜的SQL語句。我想知道如果你使用像cakephp這樣的框架,你爲什麼要尋找一個穩定的SQL查詢?恕我直言,在蛋糕中使用硬編碼的SQL並不明智。 – Fr0zenFyr 2013-02-22 12:24:19

回答

0
select * from tablename where textfield like "Camel%" or textfield like ' %Camel' 

請注意,在第二條件%之前的空間。當字符串中的任何單詞以Camel開頭時,這兩個條件將匹配,不管它是否是第一個單詞。

+0

我只會選擇id而不是* – mkaatman 2013-02-21 05:50:46

+0

我認爲在like查詢中使用正確/駝峯的情況將不會返回所有結果。至少,它從來沒有爲我工作。 ... like%Camel%...將查找包含「Camel」而非「camel」或「CAMEL」或「cAmeL」的條目。 – Fr0zenFyr 2013-02-21 05:55:09

+0

對駱駝前面的製表符不起作用。 – Victor 2013-02-21 05:57:20

0

這應該適用於所有情況下

SELECT id 
    from tablename 
WHERE textfield like '%[^A-z^0-9]Camel%' -- In the middle of a sentence 
    OR textfield like 'Camel%'   -- At the beginning of a sentence 
2

當您使用駱駝在像查詢的SQL(正確)的情況下,該字符串將查找的字符串的區分大小寫的匹配,但是,「駱駝」和「CAMEL」會查找駱駝/ CAMEL /駱駝...等等(不區分大小寫)

select id from tablename where text like "%Camel%"將返回1,3。

select id from tablename where text like "%camel"將返回4.

select id from tablename where text like "%camel%"將返回1,2,3,4。

select id from tablename where text like "Camel%"將返回1

select id from tablename where text like "camel%"將返回1,2。

select id from tablename where text like "camel %"(「駱駝」和「%」之間空間)將返回2.

通知中的字符串的情況下的差。

+0

我們做什麼,如果我想要1,2,3結果.... – 2013-02-21 06:17:54

+0

'select id from tablename where像「%camel_%」這樣的文本或像'camel%'這樣的文本 – Fr0zenFyr 2013-02-22 12:25:29

0

用戶對陣

$條件[] =陣列( 「MATCH(MODEL_name.fieldname)AGAINST( '$文本' IN BOOLEAN MODE)」);

相關問題