SQL Server Tabloda Arama Yapmak


DECLARE @TableName NVARCHAR(255) = 'TABLOADI'
DECLARE @SearchText NVARCHAR(255) = 'PUL PAS 0881'
DECLARE @SQL NVARCHAR(MAX) = ''
DECLARE @ColumnName NVARCHAR(255)

DECLARE column_cursor CURSOR FOR
SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = @TableName AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'text', 'ntext')

OPEN column_cursor
FETCH NEXT FROM column_cursor INTO @ColumnName

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @SQL = @SQL + ' OR ' + @ColumnName + ' LIKE ''%' + @SearchText + '%'''
    FETCH NEXT FROM column_cursor INTO @ColumnName
END

CLOSE column_cursor
DEALLOCATE column_cursor

SET @SQL = 'SELECT * FROM ' + @TableName + ' WHERE ' + STUFF(@SQL, 1, 4, '')

EXEC sp_executesql @SQL

Eğer tüm sütunlarda arama yapmanız gerekiyorsa ve sütun sayısı çok fazlaysa, dinamik SQL kullanarak bu işlemi otomatik hale getirebiliriz. Aşağıda, SQL Server için dinamik bir çözüm sunuyorum:

Similar Posts

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir