Save Preloader image

0%

Herkese merhaba,

Bu yazıda SQL Server’da konteyner numarası doğrulayan fonksiyon hakkında bilgi vereceğim.

Konuyu anlatmaya başlamadan önce belirtmekte yarar görüyorum.

4 seneye yakın enspektör olarak limanda görev aldım. Petrokimyasal süreçlerin operasyonel tarafında yük alım, boşaltım, kontrol ve gümrük tarafının sorunsuzca idare ve kontrol edilmesinde Kimya Mühendisi olarak çalıştım. Bu süre zarfında konteynerları uzaktan görsem de hiç ilişkim olmadı. Aslında bu tarafın da gözetim, kontrol ve mühendislik hesaplamalarını yapan bir şirketimiz vardı.

Yeni işime başlayalı aşağı yukarı iki ay oldu. Bu iki aylık süre boyunca farklı şeyler üzerinde yoğunlaştık. Genelde eskisi kadar SQL Server ile ilişkim olmasa da boş zamanlarda kullanışlı fonksiyonlar ya da işe yarar prosedürler çıkarmaya gayret ediyorum.

Bu yazıda anlatacağım konu ise Konteyner Numarasını Doğrulayan fonksiyon.

Şirkette bu terimi duyduğumda acaba belirli bir algoritması vs var mı diye düşündüm. Sonradan evde araştırdığımda bunun bir algoritmasının olduğunu gördüm.

Tabi ilk olarak yazılmış olan bir fonksiyon, prosedür vs var mı diye baktım. Tabi hiçbir şey bulamadım. Belki de gerek duyulmadı ya da birileri yazdı paylaşmak istemedi. Her şey olabilir.

Sonuç itibariyle iş zamanı haricinde ve iş için yazmadığım için paylaşmaya karar verdim.

Bununla ilgili yazılmış ne yerli ne de yabancı bir makale var. SQL Server tarafında alanında ve Dünya’da tektir.

Bu arada benim yazdığım kod TSQL konusunda daha tecrübeli arkadaşlar için biraz uzun yazılmış olabilir. Daha efektif bir şekilde de yazılabilir. Sonuçta akıl akıldan üstündür. Daha efektif halini yazıp gönderen olursa adıyla paylaşabilirim.

Gelelim konumuza,

İlk olarak böyle bir numaraya neden gerek duyulmuş. Kısa ve öz anlatmak gerekirse o kadar çok taşımacılık yapılıp konteyner kullanılıyor ki bunlar birbiriyle karışsın istenmiyor.

Konteyner Numarası Nedir?

Konteyner numarası  ISO ( International Organization For Standardization ) yani Uluslararası Standardizasyon Organizasyonu tarafından belirlenen ve konteynerlerin kimlik ve işaretlenmesini sağlayan bir sistemle üretilen koddur.

Bu kod sayesinde herhangi bir konteynerin dünya üzerinde var olup olmadığını ve temel özelliklerini tespit edebiliriz.

Ayrıca yapılmış olan bu kodlama sistemi sayesinde bir konteyner numarasının birden fazla defa kullanılmasının da önüne geçilmiş olur.

Gördüğünüz üzere HLXU2003464 yazan numara konteyner numarasıdır.

Üretici Kodu

Üç adet Latin Alfabesi harfinden oluşan ve Uluslararası Konteyner Taşımacılığı Bürosu (Bureau International des Containers ) tarafından kayıtlı olan üretici kodundan oluşturulan koddur.

Kategori Belirleyici

Bu kod kısmı aşağıda belirlenen Latin harfleriyle ve konteynerin fiziki özellikleri baz alınarak belirlenir.

· U Bütün Nakliye Konteynerleri için.
· J Nakliye Konteynerlerine Bağlanabilen ve Sökülebilen ekipmanlar için
· Z Kasa Ve Römorklar için

Seri Numarası

Konteyner üreticisi tarafından belirlenen 6 haneli numaralardan oluşur. Bu sayede konteyner üreticisi kendi konteyner filosu içerisinde benzersiz olmasını sağlar.

Kontrol Numarası

Konteyner numaraları sistematik bir hesaplama yöntemiyle belirlenir. Bu sayede konteyner numarasının kimlik doğrulaması ve uluslararası takip sistemine uygunluğu sağlanır. Uygulanan bu sistemle eğer elimizde doğruluğundan şüphe ettiğimiz bir konteyner numarası varsa doğruluğunu test etmemiz mümkün olur. İşte bu kısımda kontrolü sağlayan SQL Server fonksiyonunu yazacağız.

Hesaplama İşlemi Nasıl Yapılır?

Hesaplama işlemi için alfabedeki her bir harfe karşılık aşağıdaki numaralar kullanılır.

Konteynerin önceden üretmiş olunan her bir karakteri karakter sıralamasına göre ikinin katlarıyla çarpılır.

Son aşamada elimizdeki bilgiler aşağıda gösterilen sıralamayla son işlemlerinden geçirilerek işlenir.

Konteyner için önceden üretilmiş olunan her bir karakter sıralamasına göre ikinin katlarıyla çarpılarak genel toplam alınır.

Alınan bu toplam 11’e bölünür.

Bölme işlemi sonrası çıkan bölümün virgülden önceki kısmı alınır ve 11 ile tekrar çarpılır.

İlk aşamada topladığımız sayıdan (11 ile bölmeden önceki genel rakamların toplamı) son aşamada elde ettiğimiz sayı (Virgülden önceki kısım alınıp 11 ile çarpılması) çıkarılır. Aradaki fark konteyner numarasının son rakamına eşitse geçerli bir konteyner numarasıdır değilse geçerli bir konteyner numarası değildir.

Şimdi SQL Server için yazmış olduğum kodları inceleyelim.

Fonksiyonu oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

SQL Server Eğitimleri Kanalına Abone Olun
Author

SQL Server tarafında kendini ilerletmeye çalışırken bildiklerini sürekli başkalarına aktaran, yazılım dünyasında (C#, Java, Python vb.) kendini güncel tutmaya çalışan, araştırma yapmaktan bıkmayan, meraklı, bilginin üzerine bilgi katmaktan mutluluk duyan bir yazılım eğitmeni ve kod sever. Grafik tasarım dünyasında Indesign'ı anlatacak kadar iyi kullanabilen, Photoshop ve Illustrator'e de orta düzey hakimiyeti bulunan, internet üzerinde online kimya dergisi kurmuş ve bunu yüzbinlerce kişiye ulaştırmayı başaran bir grafik sever. WordPress tarafında 5 adet web sitesi kurmuş, bu sistemler üzerine çalışan bir WordPress sever. Sosyal medya üzerinde okumalara ve araştırmalara devam eden, kendi kurmuş olduğu kimya dergisini daha çok kişiye nasıl ulaştırırım diye düşünen ve bu konuda SEO çalışmaları üzerine kafa yoran bir Sosyal Medya sever. Kısaca çok çalışmayı seven, azimli biriyim.