当我不确定特定列时,根据字符串匹配过滤行
Filter rows according to a string match, when i am unsure of specific column
谁能帮我 SQL 查询根据字符串过滤行。
假设我想显示包含字符串 = 'PARIS' 的所有行。没有具体的列可以提及。需要在整个行级别进行过滤。
可能吗?
提前致谢。
据我所知,没有特定的语法可以做到这一点。您可以像这样构建查询:-
DECLARE @YOURSTRING NVARCHAR(50)
SET @YOURSTRING = 'PARIS'
SELECT * FROM YOURTABLE
WHERE COLUMN1 LIKE '%' + @YOURSTRING + '%'
OR COLUMN2 LIKE '%' + @YOURSTRING + '%'
OR....etc...etc..
这确实是可能的,你可以在你的 WHERE
子句中有 多个条件 和 link 它们 OR
.
SELECT * FROM yourtable
WHERE yourtable.column1 = 'yourstring'
OR yourtable.column2 = 'yourstring'
这将 return 来自 table yourtable
的所有行,其中 column1
或 column2
等于 yourstring
。您可以根据需要将其扩展到任意数量的列。
请注意,如果您想查找 包含 您的字符串的字段,则必须使用带通配符的 LIKE
语法:
SELECT * FROM yourtable
WHERE yourtable.column1 LIKE '%yourstring%'
OR yourtable.column2 LIKE '%yourstring%'
编辑: 如果您事先不知道您的table中有哪些列,唯一的解决方法我知道的是使用 SHOW COLUMNS
获取列名并动态构建查询:
SHOW COLUMNS FROM yourtable;
获得列名后,您可以 assemble 如上所述的 SELECT
语句和多个 WHERE
条件。
但是请注意,这 可能会导致问题 ,因为您最终可能会在 id 列等中进行搜索,从业务角度来看,这可能不应该包括在内。或者更糟的是,您最终可能会向最终用户提供 he/she 不应该拥有的信息。
最重要的是,想想漫长而艰难你是否真的无法事先找出列的名称。
谁能帮我 SQL 查询根据字符串过滤行。
假设我想显示包含字符串 = 'PARIS' 的所有行。没有具体的列可以提及。需要在整个行级别进行过滤。
可能吗?
提前致谢。
据我所知,没有特定的语法可以做到这一点。您可以像这样构建查询:-
DECLARE @YOURSTRING NVARCHAR(50)
SET @YOURSTRING = 'PARIS'
SELECT * FROM YOURTABLE
WHERE COLUMN1 LIKE '%' + @YOURSTRING + '%'
OR COLUMN2 LIKE '%' + @YOURSTRING + '%'
OR....etc...etc..
这确实是可能的,你可以在你的 WHERE
子句中有 多个条件 和 link 它们 OR
.
SELECT * FROM yourtable
WHERE yourtable.column1 = 'yourstring'
OR yourtable.column2 = 'yourstring'
这将 return 来自 table yourtable
的所有行,其中 column1
或 column2
等于 yourstring
。您可以根据需要将其扩展到任意数量的列。
请注意,如果您想查找 包含 您的字符串的字段,则必须使用带通配符的 LIKE
语法:
SELECT * FROM yourtable
WHERE yourtable.column1 LIKE '%yourstring%'
OR yourtable.column2 LIKE '%yourstring%'
编辑: 如果您事先不知道您的table中有哪些列,唯一的解决方法我知道的是使用 SHOW COLUMNS
获取列名并动态构建查询:
SHOW COLUMNS FROM yourtable;
获得列名后,您可以 assemble 如上所述的 SELECT
语句和多个 WHERE
条件。
但是请注意,这 可能会导致问题 ,因为您最终可能会在 id 列等中进行搜索,从业务角度来看,这可能不应该包括在内。或者更糟的是,您最终可能会向最终用户提供 he/she 不应该拥有的信息。
最重要的是,想想漫长而艰难你是否真的无法事先找出列的名称。