SQL语句之类的?要么

时间:2018-12-08 10:37:22

标签: sql

我有这个sql语句

SELECT * FROM customers WHERE first_name LIKE ?

它根据名字从搜索字段中选择客户。我也想按姓氏搜索,但我做不到。 我使用此代码,但不起作用

SELECT * FROM customers WHERE (first_name LIKE ?) OR (last_name LIKE ?)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您的第二个查询:

SELECT *
FROM customers
WHERE (first_name LIKE ?) OR (last_name LIKE ?)

应该可以-但您需要两次传入参数。您可以使用命名参数解决此问题:

SELECT *
FROM customers
WHERE (first_name LIKE :pattern) OR (last_name LIKE :pattern)

或通过使用子查询/ CTE:

SELECT c.*
FROM customers c CROSS JOIN
     (SELECT ? as pattern) p
WHERE (c.first_name LIKE p.pattern) OR (c.last_name LIKE p.pattern);

或者,您可以用一个表达式实现几乎等效的逻辑:

SELECT *
FROM customers
WHERE first_name || ' ' || last_name LIKE '%' || ? || '%';

后者并不完全等效,但是在许多情况下都是等效的。