MSSQL

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

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu