如何使用like
运算符搜索表格中的多个字段?
例如:
SELECT *
FROM EMP
WHERE ENAME LIKE ('%SCOTT%');
如果我想在单个查询中搜索多个列,例如'%SCOTT%'
或'%ADAMS%'
等,而不使用多个like子句,该怎么办?
答案 0 :(得分:0)
作为变体))
SELECT e.*
FROM EMP e
JOIN (VALUES('SCOTT'),('ADAM')) k(Name) ON e.ENAME LIKE CONCAT('%',k.Name,'%')
如果您使用SQL Server 2016或更高版本,您也可以使用string_split
SELECT e.*
FROM EMP e
JOIN (SELECT value Name FROM string_split('SCOTT,ADAM',',')) k ON e.ENAME LIKE CONCAT('%',k.Name,'%')
如果在过程
中使用名称作为varchar参数,则第二种变体很好CREATE PROC FindEmpByNames
@Names varchar(200)
AS
SELECT e.*
FROM EMP e
JOIN (SELECT value Name FROM string_split(@Names,',')) k ON e.ENAME LIKE CONCAT('%',k.Name,'%')
GO
测试
EXEC FindEmpByNames 'SCOTT,ADAM'
您还可以使用数据库表中的值
CREATE TABLE ParamNames(Name varchar(10))
INSERT ParamNames(Name)VALUES
('SCOTT'),
('ADAM')
-------------
SELECT e.*
FROM EMP e
JOIN ParamNames k ON e.ENAME LIKE CONCAT('%',k.Name,'%')