有人可以帮我解决SQL查询根据字符串过滤行的问题。
考虑我想要显示包含string ='PARIS'的所有行。没有特别的列提。需要在整个行级别进行过滤。
有可能吗?
提前致谢。
答案 0 :(得分:2)
确实如此,您可以在WHERE
子句中包含多个条件,并将其与OR
相关联。
SELECT * FROM yourtable
WHERE yourtable.column1 = 'yourstring'
OR yourtable.column2 = 'yourstring'
这将返回yourtable
或column1
等于column2
的表yourstring
中的所有行。您可以根据需要将其扩展为尽可能多的列。
请注意,如果您要查找包含字符串的字段,则必须使用带有通配符的LIKE
语法:
SELECT * FROM yourtable
WHERE yourtable.column1 LIKE '%yourstring%'
OR yourtable.column2 LIKE '%yourstring%'
修改:如果您不知道您的表格中哪些列,解决此问题的唯一方法就是获取列使用SHOW COLUMNS
创建名称并动态构建查询:
SHOW COLUMNS FROM yourtable;
获得列名后,您可以按照多个SELECT
条件汇总上述WHERE
语句。
请注意,此可能会导致问题,因为您最终可能会在ID列等中进行搜索,这可能不会从业务角度进行搜索。或者更糟糕的是,您可能最终会向最终用户提供他/她不应该拥有的信息。
最重要的是,想想长而硬是否真的无法预先找到列的名称。
答案 1 :(得分:0)
据我所知,没有特定的语法可以做到这一点。您可以像这样构建查询: -
DECLARE @YOURSTRING NVARCHAR(50)
SET @YOURSTRING = 'PARIS'
SELECT * FROM YOURTABLE
WHERE COLUMN1 LIKE '%' + @YOURSTRING + '%'
OR COLUMN2 LIKE '%' + @YOURSTRING + '%'
OR....etc...etc..