Forum
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,
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
GOSET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[DecimalToBinary]
(
@Input bigint
)
RETURNS varchar(255)
AS
BEGINDECLARE @Output varchar(255) = ''
WHILE @Input > 0 BEGIN
SET @Output = @Output + CAST((@Input % 2) AS varchar)
SET @Input = @Input / 2END
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
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.
Bahsettiğiniz olay bit-wise diye geçiyor bilginiz olsun, güzel bit-wise kullanım yöntemleri vardır.
İ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.