假设该表格包含akey1
,bkey2
,ckey3
以及更多类似的列。
有没有办法搜索共同的价值
SELECT * FROM table WHERE %key% LIKE 'xyz'
除了使用多个AND,OR条件。 如果解决方案是DBMS特定的,则无关紧要。
答案 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

希望它更容易理解。