SQL Server İle Aradığınız Bir Değerin Database’de Adresini Bulma

Bir arkadaşımızın sorusuna istinaden bu yazıyı hazırlamaya karar verdim.

Elinizde ki verinin databasedeki adresini öğrenmek istiyoruz. Örneğin “John” verisinin adresini bulalım;

use AdventureWorks2014
GO
DECLARE @tablo nvarchar(50), @colon nvarchar(50), @shema nvarchar(50), @sql nvarchar(max)

DECLARE CRS_PERSONEL CURSOR FOR

SELECT TABLE_NAME,COLUMN_NAME,TABLE_SCHEMA
FROM INFORMATION_SCHEMA.COLUMNS where
(DATA_TYPE not like N’%hierarchyid%’ and
DATA_TYPE not like N’%xml%’ and
DATA_TYPE not like N’%geography%’) and
COLUMN_NAME like ‘%name%’

OPEN CRS_PERSONEL
FETCH NEXT FROM CRS_PERSONEL INTO @tablo,@colon,@shema
WHILE @@FETCH_STATUS =0
BEGIN
select @sql = ‘
if exists (select * from [‘ +@shema+’].[‘+ @tablo +’] where [‘ + @colon + ‘] like ‘+ ‘ ‘ ‘%john%’ ‘)
select * from [‘ +@shema+’].[‘+ @tablo +’] where [‘ + @colon + ‘] like ‘+ ‘ ‘ ‘%john%’ ‘ ‘
exec (@sql)
print @sql
print @tablo
print @colon
print @shema
FETCH NEXT FROM CRS_PERSONEL INTO @tablo,@colon,@shema
END
CLOSE CRS_PERSONEL
DEALLOCATE CRS_PERSONEL

Sonuca ulaşmak için oluşturduğum scriptin içerisinde “CURSOR” yapısını kullandım. Dilerseniz bu scripti bir procedure haline de getirebilirsiniz.

NOT : hierarchyid, xml, geography gibi veri tipine sahip kolonların içerisinde “like” ile arama yapılamaz.

result

Yukarıdaki görüntüde; AdventureWorks Database’in içerisinde, bütün tabloları tarayıp, tablonun kolonları arasında, kolon adı “name” olan ve kolon değeri içinde de “John” geçen bir sorgu oluşturup, çalışmasını sağlayan scriptin sonuçları görüntülenmektedir.

Eğer kolon adını bilmiyorsanız, bu kısmı oluşturduğum scriptin sorgusundan çıkartmalısınız yada bir kısmını biliyorsanız “like” komutu ile arama yaptırmalısınız.

Yine sorguda benim “John” olarak belirttiğim kısımlara kendi aramak istediğiniz terimi yazmalısınız.

messages

Yukarıdaki görüntüde ise “Messages” sekmesi seçili durumda. Print ifadesi ile yazdırdığım değişkenlerin değerlerine buradan ulaşabilirsiniz. Bunun faydası ise şu olacak; burada “Result” ‘ da gördüğünüz sonuçların tamamının sorgusu yazılı halde. Buradan kopyalayıp sorgu ekranına yapıştırıp, hızlıca çalıştırmanız mümkün olacaktır. Aşağıda örneğini görebilirsiniz;

copy.png

Konuyla veya SQL Server ile ilgili her konuda soru sorabilirsiniz.

Bir sonraki yazıda görüşmek üzere.

Views All Time
Views All Time
Views Today
Views Today

Bunlar da hoşunuza gidebilir...

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir