• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

SQL metin formatını değiştirme

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,105
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
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
 
İşinize yararsa, ekli dosyayı inceleyin ...

.
 

Ekli dosyalar

Bende SQL olmadığı için size Excel'de örnek hazırladım.

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

.
 
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.
 
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...

.
 
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?
 
Daha farklı yöntemleri olsa da, aşağıdaki iki yöntemden biri hoşunuza gidecektir.

1566342716895.png
 
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.
 
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:
Sorunsuz çalıştı.
Tekrar teşekkür ederim.
 
Geri
Üst