我希望在查询中使用ILIKE
来查找结果。
在我的tbl_customers中,我有3列:first_name, last_name, national_code
我将值作为字符串发送,其中包含所有参数,如下所示:'name lastname 1234910'
下面是我的疑问:
SELECT
t1.id,
concat(t1.first_name, ' ', t1.last_name) as full_name,
t1.national_code,
row_number() over (order by t1.published_at desc)
FROM tbl_customers as t1 RIGHT JOIN tbl_ticketings as t2 ON t1.id =
t2.customer_id
WHERE (
(t1.first_name ILIKE '%'|| _customer_info || '%') OR (t1.last_name
ILIKE '%'|| _customer_info || '%')
OR (t1.national_code ILike '%'|| _customer_info || '%')
)
Group BY t1.id
ORDER BY
t1.published_at desc
变量_customer_info
等于'name lastname 1234910'
当我运行此查询时,什么也没有得到。
我分别更改了_customer_info
、'name'
、'lastname'
、'1234910'
,我得到了结果,但我不想这样使用。
我没有任何语法错误,我知道我的ILIKE
查询有问题;我错在哪里?
1条答案
按热度按时间axr492tv1#
你有这样的东西:
你想要它,反之亦然:
不过,我建议不要在这里用
ILIKE
蒙混过关。将变量分成三部分,然后直接比较。这样更快也更安全。