Merhaba arkadaşlar;

Ms sql de ayrı iki veri tabanım var , bu veritabanları arasında bir tabloda kayıtlı olan kayıtları diğer veritabanındaki tabloya taşımak istiyorum. Bur da şöyle bir işlem var ; bir veritanında bir değer için birden fazla kolon var (Tarih1, tarih2, tarih3 gibi ), yeni veritabanında tek bir tarih kolonu var. Bir de eski veritabında tarih alanı Datetime olarak tanımlanmış, yeni tablodaki tarih alanı nvarchar(MAX) tanımlanmıştır.Şöyle bir query yazdım;

USE [eski] 
GO
INSERT INTO [dbo].[yeni] ([YapiTarihiN])
SELECT CONVERT(nvarchar(50),[Tarihi1],104)+'^'+ CONVERT(nvarchar(50), [Tarihi2],104)+'^'+ 
       CONVERT(nvarchar(50),[Tarihi3],104)+'^'+ CONVERT(nvarchar(50),[Tarihi4],104)+'^'+ 
       CONVERT(nvarchar(50),[Tarihi5],104)+'^'+ CONVERT(nvarchar(50),[Tarihi6],104)+'^'+
       CONVERT(nvarchar(50), [Tarihi7],104)+'^'+ CONVERT(nvarchar(50),[Tarihi8],104) 
AS yapiTarihiN
FROM [dbo].[eski]
GO

YapiTarihiN: nvarchar(max) Tarihi1:datetime (ve bu alanlar zorunlu değil)

HATA: Eğer Tarih1,tarih2,tarih3,Tarih4,tarih5,tarih6,Tarih7,tarih8 alanlarından herhangi biri NULL ise ilgili kayıt için YapiTarihiN değerini NULL olarak atamaktadır(eklemektedir). Bu problemi nasıl çözebilirim ? tabloda tarih alanı haricinde de alanlar mevcut.

Teşekkürler.

soruldu: 29 May '14, 01:54

rulas's gravatar image

rulas
1.2k101329
cevap kabul oranı: 0%

değiştirildi: 29 May '14, 02:52

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288


ISNULL veya Coalesce fonksiyonlarını kullanabilirsin.

SELECT CONVERT(nvarchar(50),[coalesce(Tarihi1,'2014-01-01')],104)+'^'+ ....
permanent link

cevaplandı: 29 May '14, 02:08

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

Merhaba sarparda ; null olan alana belli bir tarih atamak yerine , ilgili alanın dikkate alınmamasını nasıl sağlayabilirim ?

(29 May '14, 02:27) rulas rulas's gravatar image

@rulas, ilgili alan dikkate alınmasın derken tam olarak neyi kastediyorsunuz? String birleştime yapıyorsunuz ve aralarına karakter ekliyorsunuz, hiç dikkate almazsa, oluşan string sizin kuralınıza uygun olmaz. Yani mecbur orada deger olmadıgını anlamanız için bir strign eklemek lazım. Ve ya string degeri oluştururken farklı bir yontem kullanmalısınız.

(29 May '14, 02:58) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Select top 100 Tarih1, Tarih2, Tarih3, Case When Tarih1 is NULL then '' else CONVERT(nvarchar(50),[Tarih1],104) + '^' end + Case When Tarih2 is NULL then '' else CONVERT(nvarchar(50),[Tarih2],104) + '^' end + Case When Tarih3 is NULL then '' else CONVERT(nvarchar(50),[Tarih3],104) + '^' end As yapiTarihiN From eski

(29 May '14, 03:12) SaRPaRDa SaRPaRDa's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×53

Soruldu: 29 May '14, 01:54

Görüntüleme: 645 kez

Son güncelleme: 29 May '14, 03:12

powered by BitNami OSQA