SQL Server’da Tüm Tablolarda Kelime Aramak
Herkese merhaba,
Bu yazıda SQL Server’da tüm tablolarda kelime aramak ile ilgili bilgi paylaşmaya çalışacağım.
SQL Server’da bazı durumlarda tüm tablolar içerisinde istediğimiz bir kelimeyi bulmak isteyebiliriz.
Aşağıdaki prosedürü kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
Not : Kayıt sayısı veya tablo sayısı çok olan tablolarda performans sıkıntısı oluşturabilir. Küçük ve Orta seviye veritabanlarında kullanabilirsiniz.
CREATE PROC TumTablolardaKelimeAramak
(@AranacakKelime NVARCHAR(100))
AS
BEGIN
CREATE TABLE #Sonuc
(
KolonAdi NVARCHAR(370),
KolonDegeri NVARCHAR(3630)
);
SET NOCOUNT ON;
DECLARE @TabloAdi NVARCHAR(256),
@KolonAdi NVARCHAR(128),
@Kelime NVARCHAR(110);
SET @TabloAdi = N'';
SET @Kelime = QUOTENAME('%' + @AranacakKelime + '%', '''');
WHILE @TabloAdi IS NOT NULL
BEGIN
SET @KolonAdi = N'';
SET @TabloAdi =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TabloAdi
AND OBJECTPROPERTY(OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0
);
WHILE (@TabloAdi IS NOT NULL) AND (@KolonAdi IS NOT NULL)
BEGIN
SET @KolonAdi =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TabloAdi, 2)
AND TABLE_NAME = PARSENAME(@TabloAdi, 1)
AND DATA_TYPE IN ( 'char', 'varchar', 'nchar', 'nvarchar','ntext' )
AND QUOTENAME(COLUMN_NAME) > @KolonAdi
);
IF @KolonAdi IS NOT NULL
BEGIN
INSERT INTO #Sonuc
EXEC ('SELECT ''' + @TabloAdi + '.' + @KolonAdi + ''', LEFT(CAST(' + @KolonAdi + 'as varchar(max)), 3630) FROM ' + @TabloAdi + ' (NOLOCK) ' + ' WHERE ' + @KolonAdi + ' LIKE ' + @Kelime);
END;
END;
END;
SELECT KolonAdi,
KolonDegeri
FROM #Sonuc;
END;
--Kullanımı
EXEC TumTablolardaKelimeAramak 'Dried fruit and bean curd';
Prosedürü oluşturalım ve test edelim.
Prosedürü çalıştırdığınızda yukarıdaki gibi bir sonuç göreceksiniz.
Prosedür ‘CHAR’, ‘VARCHAR’, ‘NCHAR’, ‘NVARCHAR’,’NTEXT’ alanları üzerinde arama yapar.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.