Anasayfa » Forum

varchar Veritü...
 

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

  RSS
Mehmet UGUR
(@mehmetugur)
Üye

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

 

Alıntı
Gönderildi : 01/12/2017 18:56
Birol AYDOĞAN
(@birolaydugan)
Üye

, leri ayıklamanız lazım.

CevapAlıntı
Gönderildi : 02/12/2017 02:21
Mehmet UGUR
(@mehmetugur)
Üye

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)

CevapAlıntı
Gönderildi : 02/12/2017 13:46
Birol AYDOĞAN
(@birolaydugan)
Üye

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 .

CevapAlıntı
Gönderildi : 02/12/2017 22:24
Birol AYDOĞAN
(@birolaydugan)
Üye

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 .

CevapAlıntı
Gönderildi : 02/12/2017 22:28
Mehmet UGUR
(@mehmetugur)
Üye

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

CevapAlıntı
Gönderildi : 10/12/2017 14:42
Birol AYDOĞAN
(@birolaydugan)
Üye

geri bildirim icin teşekkürler .

CevapAlıntı
Gönderildi : 12/12/2017 01:53
Paylaş:

Lütfen Giriş yap yada Kayıt ol