Forum
Selamlar, Personel Tablosu İsim alanındaki verileri kolonlara bölmek istiyorum.
Bunun için nasıl bir fonksiyon yazabilirim ?
Mehmet Akif Esoy, Muhammed Selman Simitci örneklerini
Ön Ad, Ad, Soyad
Mehmet, Akif, Ersoy
Muhammed, Selman, Simitci
Boşluklara göre ayırmalıyım.
Selamlar, Personel Tablosu İsim alanındaki verileri kolonlara bölmek istiyorum.
Bunun için nasıl bir fonksiyon yazabilirim ?
Mehmet Akif Esoy, Muhammed Selman Simitci örneklerini
Ön Ad, Ad, Soyad
Mehmet, Akif, Ersoy
Muhammed, Selman, Simitci
Boşluklara göre ayırmalıyım.
Merhaba;
Konu ile ilgili buradaki makale size yardımcı olabilir.
Tayfun DEĞER
Cisco Champions, vExpert, VCP4/5/6, VCP5-DT, VCP-Cloud
https://www.tayfundeger.com
Mail: [email protected]
Selamlar,
İlginize teşekkür ederim.
Makaleyi inceleyip, yorumlarımı ileteceğim.
Sağlıcakla kalın.
Saygıdeğer Üstadım,
Makalede Case fonksiyonu hakkında bilgi verilmektedir.
Benim sorunumu Substring ve Charindex fonksiyonları çözmeli diye düşünüyorum.
Ad ve Soyad ayrımı için
aşağıda belirttiğim denemeler sonuç veriyor.
Fakat çift isim veya özel işaretle ayrılmış textleri ayırmak istediğimde yapamıyorum.
Aynı alanada bulunan
Depoyeri;DepoBolgesi;ToplamStok;Maliyet örneginde ki ; ile ayrılan her alanı farklı kolonlara ayırmalıyım.
Örnek Denemelerim;
SELECT CHARINDEX(' ','Onur Karakuş') as bosluk
select substring ('Onur Karakuş',1,(SELECT CHARINDEX(' ','Onur Karakuş')-1)) as Ad ,substring ('Onur Karakuş',(SELECT CHARINDEX(' ','Onur Karakuş')+1),(select len('Onur Karakuş')-(SELECT CHARINDEX(' ','Onur Karakuş')))) as Soyad
(select len('Onur Karakuş'))
select left ('Onur Karakuş',(SELECT CHARINDEX(' ','Onur Karakuş')-1)) as Ad, right('Onur Karakuş',(select len('Onur Karakuş'))-(SELECT CHARINDEX(' ','Onur Karakuş'))) as Soyad
Selamlar,
Aşağıdaki denemelerimi Fonksiyona çevirdiğimde sanırım istediğim olacak.
------------------------------
declare
@Isim nvarchar(100);declare
@OnAd nvarchar(25);declare
@Islem nvarchar(75);declare
@Ad nvarchar(25);declare
@SoyAd nvarchar(50);
set
@Isim = 'Muhammed Selman Simitci';set
@OnAd = (select substring (@Isim,1,(SELECT CHARINDEX(' ',@Isim)-1)));set
@Islem = (select substring (@Isim,( select CHARINDEX(' ',@Isim)+1),(select LEN(@Isim))));set
@Ad = (select substring(@Islem,1,(SELECT CHARINDEX(' ',@Islem)-1)));set
@SoyAd = (select substring (@Islem,( select CHARINDEX(' ',@Islem)+1),(select LEN(@Islem))))--print @Isim;
--print @Islem;
Selamlar,
Sorunumu çözmek için yaptığım çalışmaları paylaşmak istedim. ( Üstadlar Ukalalık olarak değerlendirmeyin ltf. Benim gibi T-Sql ile yeni uğraşan arkadaşlara yol göstermesi için detayları burada paylaşmak istedim. )
1. Personel Tablosu oluşturdum,
USE [Test]
GO
/*** Object: Table [dbo].[Personel] Script Date: 09/20/2010 15:27:01 ***/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Personel](
[Per_Id] [int] IDENTITY(1,1) NOT NULL,
[Per_Isim] [nvarchar](50) COLLATE Greek_CI_AI NULL,
[Per_Adres] [nvarchar](50) COLLATE Greek_CI_AI NULL,
CONSTRAINT [PK_Personel] PRIMARY KEY CLUSTERED
(
[Per_Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
2. Tabloya veri girdim,
INSERT INTO dbo.Personel (Per_Isim,Per_Adres)
VALUES
('Mehmet Nuri Yilmaz','Istanbul')
Tabloya girilen diğer veriler;
1 Muhammed Selman Simitci Gebze
2 Mehmet Akif Ersoy Istanbul
3 Resat Nuri Guntekin Istanbul
4 Mehmet Nuri Yilmaz Istanbul
3. Ad alanı için Fonksiyon Oluşturdum,
create function UsrFnc_Ad (@DGR nvarchar(100))
returns nvarchar(100)
begin
Declare @Tanim nvarchar(100);
Declare @Islem nvarchar(75);
Declare @Ad nvarchar(25);
set @Tanim = @DGR
set @Islem = (select substring (@Tanim,( select CHARINDEX(' ',@Tanim)+1),(select LEN(@Tanim))));
set @Ad = (select substring(@Islem,1,(SELECT CHARINDEX(' ',@Islem)-1)));
return @Ad
end
4. SoyAd için Fonsiyon oluşturdum,
create function UsrFnc_SoyAd (@DGR nvarchar(100))
returns nvarchar(100)
begin
declare @Tanim nvarchar(100);
declare @Islem nvarchar(75);
declare @SoyAd nvarchar(50);
set @Tanim = @DGR
set @Islem = (select substring (@Tanim,( select CHARINDEX(' ',@Tanim)+1),(select LEN(@Tanim))));
set @SoyAd = (select substring (@Islem,( select CHARINDEX(' ',@Islem)+1),(select LEN(@Islem))))
return @SoyAd
end
5. Sorgumu yazıp çalıştırdım.
select
substring (Per_Isim,1,(SELECT CHARINDEX(' ',Per_Isim)-1)) as OnAd
, dbo.UsrFnc_Ad(Per_Isim) as Ad
, dbo.UsrFnc_SoyAd(Per_Isim) as SoyAd
from personel
şu makalem sana yardımcı olacaktır.
Üstadım,
Çok teşekkür ederim.
Rica ederim. İyi çalışmalar
Sayın Turgay Sahtiyan Makalenize ulaşamadım,Sanırım Silinmiş
Şöyle Bir sorunum Vardı;