Selamlar,

Geçenlerde SQL Server Management Studio kurulu olmayan bir pc'de acilen bir stored procedure yüzünden oluşan hatayı düzeltmem gerekti.

Çözüme giden yolda "acaba var mıdır böyle birşey?" sorusunu sorup, kısa bir google sorgulaması sonunda "vaayy. gerçekten varmış. süpermiş!" dedirten; süper, minik, can mı can bir kod(çuk) not ediyorum, sizlere ve kendime...

EXEC sp_helptext N'DatabaseName.dbo.SpName';

Efendim napçaz biz bunu diyenlere: Bunu copy paste yapıp db ve sp adını değiştirip execute ederseniz, ilgili sp'nin create sorgusu karşılayacaktır sizi.

Eeee, ben sp'ye sağ tıklar "Script Stor. Procedure as..." den bunu yapardım zaten diyenlere: Onu her zaman yapamazsınız işte. There is NO Management Studio..

Sende MsSql kurulu değilken bu sorguyu nasıl execute edersin diyenlere: Connection String ve Sorguyu ekrandan alıp execute ettiğim bir web arayüzüm var demek ki. Demek ki istediğim yerden istediğim sorguyu çalıştırabileceğim bir şey yapmışım kendime zamanında :)

Bugün kendimi kimse soru sormadan cevap vermeye programladığım bir günse demek ki.. :) Zaten de işimiz programlamaksa demek ki...

Sql tarafında ETL, bulk insert, data compare gibi işlemler yaparken string ifadelerin başlarında ve sonlarında yer alan boşluk gibi ifadeler çok can sıkıcı olabiyor çoğu zaman.

Özellikle data, source olarak bir file kullanılarak elde edilmişse; kayıtlarda boşluk dışında enter gibi farklı ifadelerin de yer alma ihtimali yüksektir. Bu tarz verileri akıllıca trimleyebilmek adına son zamanlarda uğraştığım Data Mining Projesinin ETL modülünde kullanmak üzere yazdığım sql function'u sizlerle de paylaşmak istedim.

CREATE FUNCTION   [dbo].[Trim]
(
      @pString    NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
BEGIN 
      DECLARE     @pReturnString    NVARCHAR(MAX)
     
      SET         @pString    =      REPLACE(REPLACE(@pString,CHAR(13),CHAR(32)),CHAR(10),CHAR(32))
 
      WHILE (ISNULL(CHARINDEX(CHAR(32)+CHAR(32),@pString),0)>0)
      BEGIN
            SET   @pString    =     REPLACE(@pString,CHAR(32)+CHAR(32),CHAR(32))
      END     
      IF (@pString IS NULL OR LTRIM(RTRIM(@pString))='')
            SET   @pReturnString    =     NULL
      ELSE
            SET   @pReturnString    =     LTRIM(RTRIM(@pString)) 
      RETURN      @pReturnString 

END 

Örnek Kullanım Şekli ve Outputs

SELECT dbo.Trim(' Erbil Taner Tugaylı ') -->Output: Erbil Taner Tugaylı
SELECT dbo.Trim('   Erbil    Taner     Tugaylı    ') -->Output: Erbil Taner Tugaylı
SELECT dbo.Trim(' Erbil
Taner
Tugaylı ')  -->Output: Erbil Taner Tugaylı

Bu makalede t-sql ile pivot kullanımını göreceğiz. Fakat bunun öncesinde pivot table nedir ve ne amaçla kullanılır bunu bilmekte yarar var.

Hepimizin bildiği gibi bir tablo satırlardan ve sütünlardan oluşan veri kümesidir. Fakat yüzlerce satırdan oluşan bu verilerin kolay analiz edilebilmesi ve bir bakışta bize bir fikir verebilmesi için verileri grafiğe dökme veya bazı kriterlere göre gruplama gibi bazı işlemler yaparız.
Örneğin ay, yıl, adet bilgilerini içeren bir satış tablosunun yıl bazında toplam satış adedini vermesi için yıl bazında gruplanması gibi. Fakat yaptığımız bu gruplama bile bazen binlerce satırlık verinin analiz edilebilmesi için yeterli olmaz. Bu noktada satır sayısını azaltıp sütün saysını çoğaltmak gibi bir method izlenir. Raporlama konu başlığı altında Matris Rapor olarak geçen bu konu, Excel ve Databasede karşımıza Pivot Table olarak[......]

Bazen veritabanımızdaki bir tablomuzu, başka bir tablomuzda bulunan veri ile update etmek isteyebiliriz.

Bu durumda güncellemek için kullanılacak veri static değildir. Güncel veri kayıt bazında değişiklik gösterdiği ve başka bir tabloda yer aldığı için UPDATE t-sql'ini alışık olduğumuzdan daha farklı yazmamız gerekecektir.

Basit bir örnekle anlatmak gerekirse veritabanımızda [Kullanici] ve [Iletisim] adlarında kullanıcı bilgilerini ve iletişim bilgilerini tuttuğumuz iki tablomuz olsun.

Iletisim bilgilerinin yer aldığı tabloda Email bilgisini aldığımızı fakat Kullanici tablosunda bu bilginin basit bir bug dan ötürü NULL kaldığını düşünelim. Bug'u farkettik, gerekli güncellemeyi yaptık fakat biz güncellemeyi[......]