2015-05-18 67 views
0

我有一个表(students_all),其中包含4列如下: -如何搜索表中所有列的特定值?

  • student_name
  • 年龄
  • student_id数据

现在我怎么可以搜索有关特定值,例如'left'在一个查询的所有列中使用SQL Server 2008

我的意思是如何使类似的Excel(按Ctrl +˚F)找到所有列的任何值。

+1

首先你需要标记SQL Server而不是MySQL。他们是不同的。其次,您需要更具体地了解您需要如何查询您的表格。在excel中没有像ctrl + f这样的东西。 – BICube

+1

'SELECT * WHERE column1 ='left'OR column2 ='left'OR ...' – moffeltje

+0

SQL是关于*结构化数据的 - 其中每列中的(隐含)类型的数据是不同的。因此,没有多少工具可以协助查询*列(因为这种比较通常没有意义)。你对Excel的引用可能在这里告诉你 - 尽管表面的相似之处,SQL中的表与Excel中的工作表完全不同。如果你发现自己在Excel中很难做到你可以轻易做到的事情,也许你选择了错误的工具来完成这项工作? –

回答

0
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所在科拉姆!

+0

感谢您的回复,我发现此查询 SELECT * FROM [Table Name] WHERE CONTAINS(*,'value'); 但它需要进行建立全文目录和全文检索 –

-1
select * from students_all where left (
    student_name 
    age 
    student_id 
    class 

如果所有列字符串类型

+0

您的查询是否有效?我想不是 ;)。 –

1

我的理解,就是你想要的任何表中的

的列对于具有价值left数据,可以使用

这将检查给你的行至少有一列值left


但我想要得到它包含单词left的,你需要改变所有这些为WHERE条件COLULMN_NAME LIKE %left%

希望这将有助于数据。

0
SELECT * FROM students_all as std 
WHERE 
std.student_name = 'left' 
OR std.age = 'left' 
OR std.student_id = 'left' 
OR std.class = 'left' 
5

有很多方法来检查发现类似的东西在一个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) 
1

我觉得这个earlier post是OP的尝试提到的。 但是,它需要修改才能从1个特定表中进行搜索。

相关问题