是否可以將SQL查詢與LIKE
運算符轉換爲SQL查詢,只有相等和不等式過濾器,而不是LIKE
運算符。兩個查詢的輸出必須相同。將帶有LIKE運算符的SQL查詢轉換爲帶有過濾器的SQL查詢
如果可能,它是如何完成的?
我正在使用MySQL數據庫。
我試過解決方案,但沒有成功。
是否可以將SQL查詢與LIKE
運算符轉換爲SQL查詢,只有相等和不等式過濾器,而不是LIKE
運算符。兩個查詢的輸出必須相同。將帶有LIKE運算符的SQL查詢轉換爲帶有過濾器的SQL查詢
如果可能,它是如何完成的?
我正在使用MySQL數據庫。
我試過解決方案,但沒有成功。
我不明白你的問題,但你可以以這種方式使用MySQL的函數:
select
mycol
from
mytbl
where
mycol like "test%"
將是相同的:
select
mycol
from
mytbl
where
left(mycol,4) = "test"
問題是我想只使用等式和不等式過濾器(甚至不是聚合函數)來提供LIKE的功能。可能嗎? – SRK
@jonlester不適用於所有'like'。例如:'''%test%' –
不使用任何類型的function
(如你在@jonlester答案中表示評論),你不可能做你想做的事。
用一個簡單的功能做到這一點的一種方式會是這樣:
select
mycol
from
mytbl
where
INSTR(mycol,test) > 0
你有兩個選擇......
1. SELECT myColumn FROM myTable WHERE INSTR(myColumn,'myString') = 1
2. SELECT myColumn FROM myTable WHERE LOCATE('myString',myColumn) = 1
好運!乾杯!!!
如果使用LIKE
找到子元素在列被查詢的時間,那麼你可以關閉分割這些子元素融入更新,以便能夠使用它們插入的時候單獨列/在搜索條件下的平等運算符。
當您指定您的要求時,我認爲您應該考慮整合全文索引的方向。
即,看看像SOLR,Lucene或類似的解決方案。你可能想從這裏開始Search Engine - Lucene or Solr - 然後點擊/谷歌你的方式從那裏。
在某些情況下,這可能是可能的,但不是全部。發佈您的查詢以及迄今爲止嘗試的內容。說出爲什麼你需要這樣做也是一個好主意,其他人可能會更好地解決你的問題。例如'REGEXP'。 – klennepette
你爲什麼要轉換? – xdazz
@klennepette任何需要LIKE運算符的查詢。前 - 找到前兩個字母SR ..的學生的名字。 – SRK