匹配具有相同值SQL的多个列

时间:2013-01-02 02:40:06

标签: sql

假设该表格包含akey1bkey2ckey3以及更多类似的列。
有没有办法搜索共同的价值

SELECT * FROM table WHERE %key% LIKE 'xyz'

除了使用多个AND,OR条件。 如果解决方案是DBMS特定的,则无关紧要。

2 个答案:

答案 0 :(得分:10)

缺少动态sql,你必须拼出每个列名。但是你可以获得一些语法快捷方式,只列出常量一次:

SELECT * FROM table WHERE 'xyz' IN (akey1, bkey2, ckey3)

使用动态sql,您仍然必须发出相同的查询...但您至少可以使用字符串工具来构建它,如果您想使用通配符匹配,可以查看information_schema.columns查找它们。但是,这涉及打开并迭代游标或将列数据返回给客户端,其中任何一项涉及的工作多于仅列出原始查询中的列名。希望您在开始向它发出查询之前至少知道您的数据库。

答案 1 :(得分:0)

您也可以尝试这种方法



ALTER PROCEDURE USP_GetClinicNameList
	 
	 @SearchStr varchar(50)
AS
BEGIN

SET @SearchStr = RTRIM(@SearchStr) + '%'

SELECT TOP (10)
	*
FROM clinic c
WHERE c.cclinicname LIKE @SearchStr
OR c.caddress1 LIKE @SearchStr
OR c.caddress2 LIKE @SearchStr
OR c.ccity LIKE @SearchStr
OR c.cstate LIKE @SearchStr
OR c.cclinicid LIKE @SearchStr
OR c.czip LIKE @SearchStr
OR c.ccliniccode LIKE @SearchStr
OR c.cphone LIKE @SearchStr
ORDER BY c.cclinicname

END
GO




希望它更容易理解。