我对于查询为何未返回正确的项目感到困惑

时间:2019-07-29 21:03:33

标签: sql postgresql

所以我将此项目添加到了我的数据库中

   title: green shorts
   upc: 999
   description: mens polyester blend
   brand: lrg
   location: row-1

这是我的查询

client.query('SELECT DISTINCT id, title FROM items WHERE fk = $1 AND ( title ILIKE $2 OR description ILIKE $2 OR custom1 ILIKE $2 OR custom2 ILIKE $2 OR sku ILIKE $2) OR (upc = $2) ',  [data.fk, data.search],  (err, res) => {

如果data.search为空白或”,则返回绿色短裤, 但是,如果data.search ='green'则不返回任何内容? 我的查询有问题吗?

我希望能够搜索术语“绿色”并搜索标题,描述,品牌,装潢或位置上带有绿色的单词

ILIKE是否不正确?

2 个答案:

答案 0 :(得分:1)

您需要使用%符号表示通配符。

WHERE title LIKE '%searchTerm%'

将返回包含搜索词的任何内容。

答案 1 :(得分:1)

=给出了完全匹配,但Like用于获得与模式匹配的结果,即包括通配符的结果。

您需要使用%来表示一个模式 例如,在您需要的情况下,无论您在哪里找到需要匹配的绿色,都需要两个%'s才能得到绿色的内接标记,即 select ..... where title like "%green%"