我有一个包含两列first_name
和last_name
的客户表。
如何在查询中使用LIKE,以便能够以相同的温度从两列获取数据?
例如:
SELECT CONCAT(first_name, ' ', last_name) as 'full_name'
FROM customer WHERE full_name LIKE 'John D%'
我试过这个,它告诉我full_name
列不存在。
答案 0 :(得分:33)
SELECT CONCAT(first_name, ' ', last_name) as 'full_name'
FROM customer WHERE CONCAT(first_name, ' ', last_name) LIKE 'John D%'
答案 1 :(得分:6)
你快到了
SELECT *
FROM customer
WHERE CONCAT(first_name, ' ', last_name) LIKE 'John D%'
注意:这可能没有很好的表现。您可能需要考虑full text search。
答案 2 :(得分:4)
使用HAVING
代替WHERE
:
SELECT CONCAT(first_name, ' ', last_name) as 'full_name'
FROM customer HAVING full_name LIKE 'John D%'
答案 3 :(得分:0)
我手头没有MySql,但你不能做类似下面代码的事情吗?
SELECT CONCAT(first_name, ' ', last_name) as 'full_name'
FROM customer WHERE CONCAT(first_name, ' ', last_name) LIKE 'John D%'
免责声明:这可能非常慢!!!
答案 4 :(得分:0)
SELECT *
FROM customer
WHERE CONCAT(first_name, ' ', last_name) LIKE 'John D%'
可能会非常慢,但如果您的数据库非常小,则无关紧要。使用CONCAT
时,请确保列名称的排序规则相同,否则会收到错误消息。
以下是我希望我的LIKE
语句适用于类别名称和课程名称的声明。我检查两个表中的cat_id,以便我可以知道哪个课程属于哪个类别。
SELECT * FROM courses a INNER JOIN categories b ON a.cat_id=b.cat_id
WHERE CONCAT(b.cat_name,' ',a.course_name)
LIKE :name ORDER BY b.cat_id
:name是占位符(PDO)