Forum

varchar Veritü...
 
Bildirimler
Hepsini Temizle

varchar Veritüründen int e çevirimi yapamıyorum

7 Yazılar
2 Üyeler
0 Reactions
8,604 Görüntüleme
(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Merhaba. 

varchar türünde bulunan değeri int e dönüştürmek istiyorum. Fakat çevirme fonksiyonları ile yapmama rağmen convert hatası alıyorum. Sizce çözüm yolu ne olabilir? (MSSQL SERVER 2016)

Denediğim yöntemler:
SELECT CAST(YetkiSayfalariID AS int) FROM a_FirmaBilgileri
SELECT CONVERT(INT, YetkiSayfalariID) FROM a_FirmaBilgileri
ve 
try_cast, try_convert, try_parse deyimleri

 

 
Gönderildi : 01/12/2017 18:56

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

, leri ayıklamanız lazım.

 
Gönderildi : 02/12/2017 02:21

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

SELECT STRING_SPLIT(YetkiSayfalariID, ',') FROM a_FirmaBilgileri

STRING_SPLIT ile ayırmayı deniyorum fakat STRING_SPLIT fonksiyonunu kullanabilmem için db levelini yükseltmem gerektiğinin uyarısını verdi. Leveli yükseltmeye çalıştığımda da en fazla 110 a çıkarabileceğimi söyledi. 

ALTER DATABASE Deneme SET COMPATIBILITY_LEVEL = 130 => çlıştırmam sonucu dönen değer: Valid value of the database compatilibity level are 90, 100 ,110

 

(MSSQL 2016 aynı zamanda pc de 2012 kurulu tahminime göre 2012 nin ayarlarını görüyor)

 
Gönderildi : 02/12/2017 13:46

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

Db nize sag click özelliklerden baktınızda level ne durumda ayrıca burdan da yükseltebilirsiniz ,daha sonra sql restart ediniz .

olmadı bir split fonksiyonu siz yazıp o şekilde deneyiniz .

 
Gönderildi : 02/12/2017 22:24

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

CREATE FUNCTION [dbo].[SplitFonksiyon]
(
    @string NVARCHAR(MAX),
    @delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
    DECLARE @start INT, @end INT
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
    WHILE @start < LEN(@string) + 1 BEGIN
        IF @end = 0 
            SET @end = LEN(@string) + 1
      
        INSERT INTO @output (splitdata) 
        VALUES(SUBSTRING(@string, @start, @end - @start))
        SET @start = @end + 1
        SET @end = CHARINDEX(@delimiter, @string, @start)
       
    END
    RETURN
END

select * from dbo.SplitFonksiyon('1,2,3',',') yada

SELECT * FROM dbo.SplitFonksiyon(SELECT TOP 1 YetkiSayfalariID FROM TABLE,',')

1

2

3

şeklinde dönmeli .

 
Gönderildi : 02/12/2017 22:28

(@mehmetugur)
Gönderiler: 277
Reputable Member
Konu başlatıcı
 

Hoacm merhaba,

Öncelikle cevaplarınız içni teşekkür ederim. Bazı özel nedenlerden dolayı cevabı geç yazdım kusura bakmayın. Sorunu C# tarafında split ile ayırıp diziye atarak çözdüm. Yorumunzda ki split kelimesini benim için anahtar kelime oldu saolun

 
Gönderildi : 10/12/2017 14:42

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

geri bildirim icin teşekkürler .

 
Gönderildi : 12/12/2017 01:53

Paylaş: