我有一個非常簡單的LIKE搜索MySQL,我想轉換爲全文。問題是我需要能夠實現它,使之與X.開始如下面的例子:MySQL:將「LIKE」搜索轉換爲全文?
SELECT column FROM table WHERE column LIKE "startswith%"
,你可以看到,查詢返回所有以「startswith」開頭的所有結果。我需要用全文做這個。
這可能嗎?
我有一個非常簡單的LIKE搜索MySQL,我想轉換爲全文。問題是我需要能夠實現它,使之與X.開始如下面的例子:MySQL:將「LIKE」搜索轉換爲全文?
SELECT column FROM table WHERE column LIKE "startswith%"
,你可以看到,查詢返回所有以「startswith」開頭的所有結果。我需要用全文做這個。
這可能嗎?
不,那是工作不是如何全文(它實際上只是一個帶有下鬆的話名單,沒有關於相對於字符串的位置信息),但沒有理由爲什麼你不能有LIKE ...
作爲額外WHERE
條款。如果在column
上沒有其他密鑰,FULLTEXT仍然可以幫助獲得更小的結果子集。如果在column
上有一個密鑰,那麼對此使用FULLTEXT是無用的。
您可以使用ADD INDEX (column(123));
(僅索引前123個字符)在列的開頭設置一個鍵。這也適用於text/blob列(在後一種情況下,它是您給出的二進制長度)。
你能給我一個例子,或者是一個例子的鏈接嗎?這可能是我正在尋找的! – qwerty 2011-06-07 21:23:14
究竟是什麼樣的例子?你的'LIKE'工作,如果你沒有一個鍵,不想使用FULLTEXT,而是設置我建議的鍵,使用'ALTER TABLE tablename ADD INDEX(columname(123));'或任何寬度需要如果你想用FULLTEXT來加快速度,使用'SELECT column FROM table WHERE MATCH(columnname)AGAINST('你的搜索字符串*'IN BOOLEAN MODE)和columnname LIKE'你的搜索字符串%'; – Wrikken 2011-06-07 21:27:18
是的,我正在爲速度而努力。你給我的例子效果很好! :) – qwerty 2011-06-07 22:06:39
我不知道MySQL,但是在SQL Server中,你可以將列轉換爲varchar
和結果進行LIKE
,如下面:
SELECT column FROM table WHERE CONVERT(varchar(255), column) LIKE 'startswidth%'
因爲這是ANSI標準,我相信MySQL也會處理這個問題。
是的,MySQL會處理它,但沒有必要:LIKE將在沒有轉換的情況下工作。 – Wrikken 2011-06-07 21:17:06
你的意思是'像'一個很長的文本%「'? – Sparkup 2011-06-07 21:08:16