2012-01-20 64 views
0

是否可以將SQL查詢與LIKE運算符轉換爲SQL查詢,只有相等和不等式過濾器,而不是LIKE運算符。兩個查詢的輸出必須相同。將帶有LIKE運算符的SQL查詢轉換爲帶有過濾器的SQL查詢

如果可能,它是如何完成的?

我正在使用MySQL數據庫。

我試過解決方案,但沒有成功。

+1

在某些情況下,這可能是可能的,但不是全部。發佈您的查詢以及迄今爲止嘗試的內容。說出爲什麼你需要這樣做也是一個好主意,其他人可能會更好地解決你的問題。例如'REGEXP'。 – klennepette

+0

你爲什麼要轉換? – xdazz

+0

@klennepette任何需要LIKE運算符的查詢。前 - 找到前兩個字母SR ..的學生的名字。 – SRK

回答

0

我不明白你的問題,但你可以以這種方式使用MySQL的函數:

select 
    mycol 
from 
    mytbl 
where 
    mycol like "test%" 

將是相同的:

select 
    mycol 
from 
    mytbl 
where 
    left(mycol,4) = "test" 
+0

問題是我想只使用等式和不等式過濾器(甚至不是聚合函數)來提供LIKE的功能。可能嗎? – SRK

+0

@jonlester不適用於所有'like'。例如:'''%test%' –

1

不使用任何類型的function(如你在@jonlester答案中表示評論),你不可能做你想做的事。

用一個簡單的功能做到這一點的一種方式會是這樣:

select 
    mycol 
from 
    mytbl 
where 
    INSTR(mycol,test) > 0 
0

你有兩個選擇......

1. SELECT myColumn FROM myTable WHERE INSTR(myColumn,'myString') = 1 

2. SELECT myColumn FROM myTable WHERE LOCATE('myString',myColumn) = 1 

好運!乾杯!!!

0

如果使用LIKE找到子元素在列被查詢的時間,那麼你可以關閉分割這些子元素融入更新,以便能夠使用它們插入的時候單獨列/在搜索條件下的平等運算符。

0

當您指定您的要求時,我認爲您應該考慮整合全文索引的方向。

即,看看像SOLR,Lucene或類似的解決方案。你可能想從這裏開始Search Engine - Lucene or Solr - 然後點擊/谷歌你的方式從那裏。