Ahm*_*lla 1 sql sql-server search sql-server-2008
我有一个table(students_all),包含4列如下: -
现在,我如何'left'使用SQL Server 2008搜索特定值,例如在一个查询的所有列中.
我的意思是如何使Excel(Ctrl+ F)之类的东西在所有列中找到任何值.
有很多方法可以检查在一个SQL中为特殊表找到类似的东西,所以我建议这样:
SELECT *
FROM students_all
WHERE student_name + age + student_id + class LIKE '%left%';
Run Code Online (Sandbox Code Playgroud)
但是对于一种动态的方式我使用它:
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 + '%''';
-- Or if you want to add other field types you can use this instead:
--SELECT @sql = 'SELECT * FROM ' + @TableName + ' WHERE CAST(' + @sql + ' AS NVARCHAR(MAX)) LIKE ''%' + @Find + '%''';
EXEC(@sql);
Run Code Online (Sandbox Code Playgroud)
小智 2
SELECT *
FROM students_all as t
WHERE t.student_name == 'left'
OR t.age == 'left'
OR t.student_id == 'left'
OR t.class == 'left'
Run Code Online (Sandbox Code Playgroud)
没有一种“快速”方法可以一次检查每一列,您需要逐一检查每一列!