假设该表具有 、 等列akey1
以及bkey2
更多ckey3
类似的列。
有没有办法寻找一个共同的价值
SELECT * FROM table WHERE %key% LIKE 'xyz'
除了使用多个 AND , OR 条件。解决方案是否特定于 DBMS 都没关系。
假设该表具有 、 等列akey1
以及bkey2
更多ckey3
类似的列。
有没有办法寻找一个共同的价值
SELECT * FROM table WHERE %key% LIKE 'xyz'
除了使用多个 AND , OR 条件。解决方案是否特定于 DBMS 都没关系。
缺少动态 sql,您将不得不拼出每个列名。但是您可以获得一些语法快捷方式,并且只列出一次常量:
SELECT * FROM table WHERE 'xyz' IN (akey1, bkey2, ckey3)
使用动态 sql,您仍然必须发出相同的查询...但是您至少可以先使用字符串工具来构建它,如果您想使用通配符匹配,您可以在information_schema.columns
视图中查找它们。但是,这涉及打开和迭代游标或将列数据返回给客户端,其中任何一个都涉及到更多的工作,而不仅仅是在原始查询中列出列名。希望您在开始向它发出查询之前至少对您的数据库有足够的了解。
你也可以试试这个方法
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
希望它会更容易理解。