Forum

Bir alanı kolonlara...
 
Bildirimler
Hepsini Temizle

Bir alanı kolonlara bölme

10 Yazılar
4 Üyeler
0 Reactions
9,060 Görüntüleme
(@MuratSimitci)
Gönderiler: 38
Eminent Member
Konu başlatıcı
 

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.


 


 

 
Gönderildi : 18/09/2010 02:55

(@tayfundeger)
Gönderiler: 1941
VMware Guru
 

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]

 
Gönderildi : 18/09/2010 12:03

(@MuratSimitci)
Gönderiler: 38
Eminent Member
Konu başlatıcı
 

Selamlar,


 İlginize teşekkür ederim.


 


Makaleyi inceleyip, yorumlarımı ileteceğim.


 


Sağlıcakla kalın.

 
Gönderildi : 18/09/2010 17:01

(@MuratSimitci)
Gönderiler: 38
Eminent Member
Konu başlatıcı
 

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


 


 

 
Gönderildi : 18/09/2010 17:21

(@MuratSimitci)
Gönderiler: 38
Eminent Member
Konu başlatıcı
 

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 @OnAd;


--print @Islem;


print @Ad;


Print @SoyAd;

 
Gönderildi : 19/09/2010 21:45

(@MuratSimitci)
Gönderiler: 38
Eminent Member
Konu başlatıcı
 

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


 


 

 
Gönderildi : 20/09/2010 19:06

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

şu makalem sana yardımcı olacaktır.

http://www.turgaysahtiyan.com/post/SQL-Server-da-Verilen-Stringi-Split-Yapc4b1p-Table-a-Aktarmak.aspx

 
Gönderildi : 26/09/2010 01:07

(@MuratSimitci)
Gönderiler: 38
Eminent Member
Konu başlatıcı
 

Üstadım,


Çok teşekkür ederim.

 
Gönderildi : 26/09/2010 01:57

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

Rica ederim. İyi çalışmalar

 
Gönderildi : 26/09/2010 14:23

Mehmet Ertaş
(@mehmetertai)
Gönderiler: 19
Eminent Member
 

Sayın Turgay Sahtiyan Makalenize ulaşamadım,Sanırım Silinmiş

Şöyle Bir sorunum Vardı;

açiklama kisminda "SODEXO AVANTAJ ÖDÜL HIZM.FT.NIZ NO:HEA201600007199" seklinde
olan satirlarim var, bu satirlarda içinde "FT.NIZ" geçenlerin "NO:" dan sonrasini ayni tabloda "EVRAKNO" Kismina yazdirabilir miyim acaba. Birde Bazi Satirlarda "SODEXO AVANTAJ ÖDÜ.FT.NIZ NO:HEA201600007199 KDVSI" Seklinde oluyor.
Yani "NO:" dan sonrasini bosluga kadar olan kismini EVRAKNO ya yazmak istiyorum.
Simdiden Tesekkür ederim.
 
Cümlenin tamami söyle 
SELECT * FROM yevmiye where ACiklama like '%FT.NIZ%'  and fistar between '01.01.2016'  and '29.02.2016'

 

 
Gönderildi : 25/05/2016 18:06

Paylaş: