您的SELECT
只會查找文本包含通配符之間的位的行:您不能將LIKE
與比較邏輯組合在一起。
你可以做什麼,但是,是使用正則表達式去掉文本的相關部分,然後分析它。
請記住,雖然,結合
一下子將不提供最佳的性能!我建議如下:
- 使用觸發器,讓你有 一些便於管理剔除文本的第(即50個字左右)一起工作, 將這個潛臺詞到一個單獨的表
- 使用MySQL正則表達式或全文函數來分析您的COUNT秒
所以,你的觸發器將有類似:
select
ltrim(rtrim(substring(paragraphs, instr(paragraphs, 'count:') + 6, 10)))
from books
where instr(paragraphs, 'count:') > 0
這會讓你在'count:'
之後的下10個字符,修剪空白。那麼你可以通過例如
select substring(text_snippet, 1, instr(text_snippet, ' ')) as count_value
from
(
select
ltrim(rtrim(substring(paragraphs, instr(paragraphs, 'count:') + 6, 10)))
as text_snippet
from books
where instr(paragraphs, 'count:') > 0
) x
where isnumeric(substring(text_snippet, 1, instr(text_snippet, ' '))) = 1
獲得數值在COUNT位之後的行。
然後,您可以提取旁邊COUNT數值,保存爲數字在一個單獨的表,然後使用JOIN這樣的:
select b.*
from books b inner join books_count_values v
on b.id = v.books_id
where v.count_value > 0
看到這裏
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html
爲在您的處置功能。
是的,使用'like'總是可以的,即使你只想用一列搜索,你也可以在這裏看看:http://dev.mysql.com/doc/refman/ 5.1/EN /全文 - 自然語言。HTML和閱讀關於布爾全文搜索也) – Najzero
@Najzero:我認爲OP想要結合全文比較和全文內容的定性檢查,在這種情況下,LIKE不會削減它。 – davek