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.

SQL Server'da Tüm Tablolarda Kelime Aramak

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.

582 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!