我有一个表(students_all
),其中包含4列如下: -如何搜索表中所有列的特定值?
- student_name
- 年龄
- student_id数据
- 类
现在我怎么可以搜索有关特定值,例如'left'
在一个查询的所有列中使用SQL Server 2008。
我的意思是如何使类似的Excel(按Ctrl +˚F)找到所有列的任何值。
我有一个表(students_all
),其中包含4列如下: -如何搜索表中所有列的特定值?
现在我怎么可以搜索有关特定值,例如'left'
在一个查询的所有列中使用SQL Server 2008。
我的意思是如何使类似的Excel(按Ctrl +˚F)找到所有列的任何值。
SELECT *
FROM students_all as t
WHERE t.student_name == 'left'
OR t.age == 'left'
OR t.student_id == 'left'
OR t.class == 'left'
没有一个“快”的方式在同一时间检查每个colums,您需要检查每1by1所在科拉姆!
感谢您的回复,我发现此查询 SELECT * FROM [Table Name] WHERE CONTAINS(*,'value'); 但它需要进行建立全文目录和全文检索 –
select * from students_all where left (
student_name
age
student_id
class
如果所有列字符串类型
您的查询是否有效?我想不是 ;)。 –
我的理解,就是你想要的任何表中的
的列对于具有价值left
数据,可以使用
这将检查给你的行至少有一列值left
但我想要得到它包含单词left
的,你需要改变所有这些为WHERE
条件COLULMN_NAME LIKE %left%
希望这将有助于数据。
SELECT * FROM students_all as std
WHERE
std.student_name = 'left'
OR std.age = 'left'
OR std.student_id = 'left'
OR std.class = 'left'
有很多方法来检查发现类似的东西在一个SQL的一个特殊的表,所以我建议是这样的:
SELECT *
FROM students_all
WHERE student_name + age + student_id + class LIKE '%left%'
但我用这一个动态的方式:
DECLARE @TableName nvarchar(256) = 'Table_1'
DECLARE @Find nvarchar(50) = '1'
DECLARE @sql nvarchar(max) = ''
SELECT @sql = @sql +
CASE
WHEN @sql = '' THEN ''
ELSE '+ '
END + 'CONVERT(nvarchar(max), ISNULL(' + cols.COLUMN_NAME + ', '''')) COLLATE DATABASE_DEFAULT '
FROM INFORMATION_SCHEMA.COLUMNS cols
WHERE cols.TABLE_NAME = @TableName
SELECT @sql = 'SELECT * FROM ' + @TableName + ' WHERE ' + @sql + 'LIKE ''%' + @Find + '%'''
EXEC(@sql)
我觉得这个earlier post是OP的尝试提到的。 但是,它需要修改才能从1个特定表中进行搜索。
首先你需要标记SQL Server而不是MySQL。他们是不同的。其次,您需要更具体地了解您需要如何查询您的表格。在excel中没有像ctrl + f这样的东西。 – BICube
'SELECT * WHERE column1 ='left'OR column2 ='left'OR ...' – moffeltje
SQL是关于*结构化数据的 - 其中每列中的(隐含)类型的数据是不同的。因此,没有多少工具可以协助查询*列(因为这种比较通常没有意义)。你对Excel的引用可能在这里告诉你 - 尽管表面的相似之处,SQL中的表与Excel中的工作表完全不同。如果你发现自己在Excel中很难做到你可以轻易做到的事情,也许你选择了错误的工具来完成这项工作? –