Forum

SQL de byte dü...
 
Bildirimler
Hepsini Temizle

SQL de byte düzeyinde (ikilik sistemde) veri karşılaştırma

5 Yazılar
2 Üyeler
0 Reactions
1,023 Görüntüleme
(@TayfunKOC)
Gönderiler: 169
Reputable Member
Konu başlatıcı
 

Merhabalar,

 

Sql de int bir değeri byte (ikilik sisteme) tipine çevirerek ikilik sistemde farklı bit int değer ile karşılaştırma yapmak istiyorum.İnternette araştıdım aşağıda ki gibi bir fonksiyon buldum.Ancak buda varchar tipinde değer döndürüyor ve işime yaradığı söylenemez.

USE [Test]
GO

/*** Object: UserDefinedFunction [dbo].[DecimalToBinary] Script Date: 8.3.2016 21:51:00 ***/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

 

CREATE FUNCTION [dbo].[DecimalToBinary]
(
@Input bigint
)
RETURNS varchar(255)
AS
BEGIN

DECLARE @Output varchar(255) = ''

WHILE @Input > 0 BEGIN

SET @Output = @Output + CAST((@Input % 2) AS varchar)
SET @Input = @Input / 2

END

RETURN REVERSE(@Output)

END

 

 

 

GO

 

 

 

İyi Çalışmalar.

 
Gönderildi : 09/03/2016 00:42

(@TayfunKOC)
Gönderiler: 169
Reputable Member
Konu başlatıcı
 

Merhabalar,

 

Sql de int bir değeri byte (ikilik sisteme) tipine çevirerek ikilik sistemde farklı bit int değer ile karşılaştırma yapmak istiyorum.İnternette araştıdım aşağıda ki gibi bir fonksiyon buldum.Ancak buda varchar tipinde değer döndürüyor ve işime yaradığı söylenemez.

USE [Test]
GO

/*** Object: UserDefinedFunction [dbo].[DecimalToBinary] Script Date: 8.3.2016 21:51:00 ***/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

 

CREATE FUNCTION [dbo].[DecimalToBinary]
(
@Input bigint
)
RETURNS varchar(255)
AS
BEGIN

DECLARE @Output varchar(255) = ''

WHILE @Input > 0 BEGIN

SET @Output = @Output + CAST((@Input % 2) AS varchar)
SET @Input = @Input / 2

END

RETURN REVERSE(@Output)

END

 

 

 

GO

 

 

 

İyi Çalışmalar.

 

 

Merhabalar,

 

Araştırmalarım sonucunda aşağıda ki fonksiyonun bana istediğim değeri döndürdüğünü buldum.Bu iş görür.Ancak tabi varchar tipinde olduğundan dolayı hala bu byte' a benzeyen varchar türünü bit seviyesinde nasıl karşılaştıracağımı bulamadım.

 

CREATE FUNCTION INT2BIN
(
@value INT,
@fixedSize INT = 10
)
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @result VARCHAR(1000) = '';

WHILE (@value != 0)
BEGIN
IF(@value%2 = 0)
SET @Result = '0' + @Result;
ELSE
SET @Result = '1' + @Result;

SET @value = @value / 2;
END;

IF(@FixedSize > 0 AND LEN(@Result) < @FixedSize)
SET @result = RIGHT('00000000000000000000' + @Result, @FixedSize);

RETURN @Result;
END
GO

 
Gönderildi : 09/03/2016 00:56

(@TayfunKOC)
Gönderiler: 169
Reputable Member
Konu başlatıcı
 

Merhabalar,

 

Arkadaşlar çok basit bir işlemi sanırım gözümde büyütmüşüm.Sql zaten bu işlemi yapıyormuş. 🙂 

 

Örnek ;

 

declare @degerBir int

declare @degerIki int

 

set @degerBir=11  -- (00001011)

set @degerIki = 2  -- (00000010)

 

select @degerBir & @degerIki 

 

Sonuç 2 arkadaşlar 🙂 İçermediği durumda da 0 dönüyor.

 

İyi Çalışmalar.

 
Gönderildi : 09/03/2016 13:20

(@caglarozenc)
Gönderiler: 247
Reputable Member
 

Bahsettiğiniz olay bit-wise diye geçiyor bilginiz olsun, güzel bit-wise kullanım yöntemleri vardır. 

 
Gönderildi : 16/03/2016 14:38

(@TayfunKOC)
Gönderiler: 169
Reputable Member
Konu başlatıcı
 

İlgi için teşekkürler. Yazılım tarafında da bit sisteminde ki mantık ile güzel veri saklama yöntemleri mevcut.

 
Gönderildi : 19/04/2016 18:17

Paylaş: