我有一个搜索框,你可以输入纯文本。关键字之间用空格隔开。
我用的是
SELECT * FROM Tbl
WHERE NOT EXISTS(
SELECT * FROM @SearchItems WHERE NOT(
name LIKE SItem OR
description LIKE SItem OR
field3 LIKE SItem)
)
这将搜索不存在搜索项但未找到的条目->也就是说,它只显示项目,在任何字段中都可以找到所有searchitems。我使用这两个'NOT's,因为否则我将不得不检查count of found items=count of all items。
但是现在我对日期有个问题。因为10/05/05是一个日期,但也可能是描述中的一个数字。所以我想得到所有项目,其中有一个10/05/05在一个正常的领域,或日期匹配的具体日期。
AND NOT EXISTS(
SELECT * FROM @DateItems WHERE NOT(
date = DItem)
)
这意味着,项目需要有10/05/05作为字符串在一个字段和日期,但如果我使用或,这意味着所有项目与正确的日期将显示,而不管其他关键字。如果我从'all keywords'中删除'date keywords',它将在描述中找不到字符串。
如何解决这个问题?当我输入'10/05/05'时,我想获取日期或描述中的日期的所有项目,但如果我输入'blue 10/05/05'蓝色必须在其中一个字段中,10/05/05可能在正常字段或日期中。
编辑:
我忘了提一下:在“all keywords”数组中,日期是原始格式的,比如“10/05/05”。实现为日期的关键字以ISO格式“2005-05-10”存储在“日期关键字”数组中。所以我不能这样做
WHERE DItem = date OR description like DItem
.
谢谢你的帮助。