Belli bir karakterden öncesini veya sonrası almak için fonksiyonların kodları ve kullanımı
SQL’de herkesin sık ihtiyaç duyduğu bir ihtiyacımızın en basit halini sizlerle paylaşacağım. Bir tablo alanında belli bir karakterden öncesini veya sonrasını bulabilmemiz için fonksiyon oluşturmamız gerekmektedir. Fonksiyonların scriptini sayfanın aşağısında paylaştım. Şimdi sizlere kullanımından örnek vereceğim.
Sınıflar Tablomuzda ASınıfı alanında (-) işaretine göre sağını veya solunu almayı göstereceğim.
SELECT dbo.ysf_KeySuffix(ASınıfı, ‘-‘) FROM Sınıflar WITH(NOLOCK) –Bu (-) karakterinden öncesini yani solunda yazanları getirir.
SELECT dbo.ysf_KeyPrefix(ASınıfı, ‘-‘) FROM Sınıflar WITH(NOLOCK) –Bu (-) karakterinden sonrasını yani sağ tarafında yazanları getirir.
Scriptleri paylaşıyorum. Kopyala yapıştır ile alarak direk veritabanınızda bu fonksiyonları oluşturabilirsiniz.
CREATE FUNCTION [dbo].[ysf_KeyPrefix]
(
@MPKey nvarchar(100),
@SepChar nvarchar(1) = '.'
)
RETURNS nvarchar(100)
AS
BEGIN
DECLARE @KeyRev nvarchar(255)
DECLARE @TBPartRev nvarchar(255)
DECLARE @Posi int
DECLARE @PosFull int
DECLARE @TBPart nvarchar(255)
IF CHARINDEX (@SepChar, @MPKey) > 0
BEGIN
SELECT @KeyRev = @MPKey
SELECT @Posi = CHARINDEX (@SepChar, @KeyRev) +1
SELECT @PosFull = LEN (@KeyRev) - @Posi
SELECT @TBPartRev = SUBSTRING(@KeyRev, @Posi, @PosFull + 1 )
SELECT @TBPart = @TBPartRev
END
ELSE
BEGIN
SELECT @TBPart = @MPKey
END
RETURN @TBPart
END
CREATE FUNCTION [dbo].[ysf_KeySuffix]
(
@MPKey nvarchar(100),
@SepChar nvarchar(1) = '.'
)
RETURNS nvarchar(100)
AS
BEGIN
DECLARE @KeyRev nvarchar(255)
DECLARE @IDPartRev nvarchar(255)
DECLARE @Posi int
DECLARE @IDPart nvarchar(255)
IF CHARINDEX (@SepChar, @MPKey) > 0
BEGIN
SELECT @KeyRev = @MPKey
SELECT @Posi = CHARINDEX (@SepChar, @KeyRev) - 1
SELECT @IDPartRev = SUBSTRING(@KeyRev, 1, @Posi)
SELECT @IDPart = @IDPartRev
END
ELSE
BEGIN
SELECT @IDPart = @MPKey
END
RETURN @IDPart
END