2015-05-18 65 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個特定表中進行搜索。

相關問題