SQL metin formatını değiştirme

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,101
Excel Vers. ve Dili
excel 2007 türkçe
Merhabalar
Sql de rakamları içeren metin formatında bir sütunum var.Yalnız uzunlukaları farklı.
Distinct yaptığımda mükerrer sonuç oluyor.
Bunların uzunluklarını eşitleyebilir miyim?
Teşekkürler

eski
12
234
1234567
4536

yeni (istenen)
0000012
0000234
1234567
0004536
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
İşinize yararsa, ekli dosyayı inceleyin ...

.
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
Bende SQL olmadığı için size Excel'de örnek hazırladım.

Önemli olan; koddaki strSQL değişkeninde yer alan "Format" fonksiyonu....

.
 

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,101
Excel Vers. ve Dili
excel 2007 türkçe
Select format([HN],0000000) from [gy].[dbo].[tablo]
Select format([HN],'#######') from [gy].[dbo].[tablo]

her iki şekide hata veriyor

Msg 8116, Level 16, State 1, Line 25
Argument data type nvarchar is invalid for argument 1 of format function.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,291
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Özel kişi
SQL kullanmadığım için bir şey diyemeyeceğim ...... kullandığınız versiyona göre internette arama yapın veya bahsettiğiniz alanı Excel'e aktarıp, düzenleyin sonra SQL'e aktarın.

@Zeki Gürsoy bu mesajı görürse, size yardımcı olacaktır...

.
 

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,101
Excel Vers. ve Dili
excel 2007 türkçe
SELECT
CASE LEN([HN] )
WHEN 3 THEN '0000' +[HN]
WHEN 4 THEN '000' +[HN]
WHEN 5 THEN '00' +[HN]
WHEN 6 THEN '0' +[HN]
WHEN 7 THEN '' +[HN]
ELSE ' *****' + 'DÜŞÜNCE'
END AS newlastName
from [gY].[dbo].[tablo]
order by newlastName



Tekrar ilginize teşekkür ederim.
Bu kodla kısmen yapabildim.
Ancak sütunda NULL değerlerde olabilir.
Uzunluğunu 4 olarak görebileceğinden soruna yol açabilir mi?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,237
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Daha farklı yöntemleri olsa da, aşağıdaki iki yöntemden biri hoşunuza gidecektir.

1566342716895.png
 

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,101
Excel Vers. ve Dili
excel 2007 türkçe
Zeki hocam cevap için teşekkürler
Birinci yöntem çalıştı
ikinci yöntemde hata aldım.(format yöntemi)

SELECT TOP (1000) [HN]
,case when [HN] IS NULL then '0000000' else format([HN],'0000000') end [Format Yöntemi]
FROM [gy].[dbo].[tablo00$]
order by [HN]

Msg 8116, Level 16, State 1, Line 18
Argument data type nvarchar is invalid for argument 1 of format function.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,237
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Hata mesajına göre [HN] isimli alan sayı değil, metin' miş. İlk yöntemin çalışmasındaki sebep, iki metnin birleşerek sağdan 7 karakteri alması. Hatta, oradaki cast dönüşümü gereksizdir.

Eğer Format fonksiyonu kullanmayı isterseniz [HN] alanı önce sayıya çevrilmeli. Aşağıdaki kullanımda Format fonksiyonu ile de aynı sonuca ulaşabilirsiniz...

SQL:
case when [HN] is null then '0000000' else format(cast([HN] as int), '0000000') end
Not: [HN] isimli alan nvarchar olduğuna göre, toplu bir update ile tüm değerler '0000054' gibi bir biçime çevrilebilir...

.
 
Son düzenleme:

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,101
Excel Vers. ve Dili
excel 2007 türkçe
Sorunsuz çalıştı.
Tekrar teşekkür ederim.
 
Üst