如何使用SQL LIKE运算符匹配两列姓名数据(输入值为“Obe”)
使用SQL LIKE同时匹配多列数据
现有数据表
| LastName | FirstName |
|---|---|
| Mr. | Bean |
| Mr. | Jobe |
需求
当输入关键词为“Obe”时,用SQL的LIKE运算符同时匹配LastName和FirstName两列,只要任意一列包含该关键词就返回对应行。
你当前尝试的SQL问题
你写的SQL语句:
Select * from name where inputname like (‘%’ || (trim(firstname) || ‘%’));这里有两个问题:一是匹配逻辑搞反了——应该是用列值去匹配输入的关键词,而非让关键词匹配列值;二是只检查了
FirstName列,没覆盖LastName列。
正确写法
直接写死关键词的情况
SELECT * FROM name WHERE LastName LIKE '%Obe%' OR FirstName LIKE '%Obe%';
执行这条语句后,数据表中FirstName为Bean的行(包含“Obe”子串)会被匹配返回。
关键词为变量的情况(以Oracle为例)
如果关键词是动态传入的变量,用字符串拼接生成匹配条件:
SELECT * FROM name WHERE LastName LIKE '%' || 'Obe' || '%' OR FirstName LIKE '%' || 'Obe' || '%';
注意:不同数据库的字符串拼接方式不同,比如MySQL用CONCAT('%', 'Obe', '%'),SQL Server用'%' + 'Obe' + '%',根据你使用的数据库调整即可。
内容的提问来源于stack exchange,提问作者otopus
相关产品推荐
相关产品推荐

