Announcement

Collapse
No announcement yet.

bigint als binär auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • bigint als binär auslesen

    Hallo zusammen,

    Ich habe eine Tabelle mit Zahlen, die Rechte symbolisieren.
    z.B. 65535, 10, 2
    In der Datenbank sind diese Zahlen leider als BigInt gespeichert.

    Ich bräuchte Sie aber binär, also 0001 1101, denn jede 1 representiert ein Recht, das der Benutzer besitzt.
    Ich möchte alle Benutzer aus der Datenbank auslesen, die das Recht haben Projekte zu erfassen. Das sind alle, die an 4. letzter Stelle eine 1 haben.

    Im SQL gibt es den ausdruck "binary":
    select permvalue, cast(permvalue as binary) from permissions

    Aber dieser spuckt Hex-Zahlen aus:
    Bei dezimal 10 gibt dies 0x000A
    statt 0000 1010

    Gibt es einen sql-ausdruck, der meinen Bigint direkt in 0000 1010 umwandelt?

  • #2
    Wie wäre es diese umwandlung im Client/Businesslogik durchzuführen?

    Comment


    • #3
      Hier gibt es eine Sammlung von 123 TSQL-Funktionen, unter anderem ist da DECTOBIN dabei, um eine decimal(18,0), die auch ein bigint aufnehmen kann, in einen Binärstring umzuwandlen. Habe das aber selber bisher noch nie benutzt, kann daher nichts uber die Richtigkeit der Funktionen ausssagen:

      http://www.planet-source-code.com/vb...d=502&lngWId=5

      bye,
      Helmut

      Comment


      • #4
        Hab's gerade mal probiert - in der Funktion steht nicht wie angenoommen decimal(18,0) drinnen sondern nur int, aber einfach auf bigint austauschen, dann geht's. Sieht dann so aus (falls du den rest nicht brauchst):
        Code:
        CREATE function [dbo].[BIGINT_TO_BIN](@n bigint ) 
        returns varchar(255)
        as
        BEGIN
          DECLARE
            @temp  int,
            @s     varchar(255)
        
          SET @s = ''
          WHILE (@n > 0) BEGIN
            SET @temp = @n % 2
            SET @n = @n / 2
            SET @s = char(48 + @temp) + @s
          END
        
          RETURN @s
        END
        bye,
        Helmut

        Comment


        • #5
          Herzlichen Dank, es funktioniert!

          Comment

          Working...
          X