none
was ist hier falsch? RRS feed

  • Frage

  • Hallo, ich möchte eine Hexadezimalzahl innerhalb einer anderen Hexadezimalzahl durchsuchen:

    declare @Zahl int
    @Zahl = select Werte from pat
        where pat = @PAT_1
    
    if (@Zahl and &H0100000 = &H0100000))
    --Hier soll der &H0100000 von dem gesamten Wert subtrahiert werden
    @Zahl = @Zahl-&H0100000
    
    end
    
    update pat
    set = Wert = @Zahl
              
    


    Irgendwie kommt ein Fehler, was habe ich da falsch gemacht?

    Danke für jeden Tipp

    Freitag, 18. März 2011 10:41

Antworten

  • Hallo,

    da ist so ziemlich alles falsch. Hex-Werte werden nicht mit Präfix &H sondern mit 0x dargestellt; Werte mit && und nicht mit AND, Variablen mussen mit SET zugewiesen usw.

    So geht es:

    declare @Zahl int

    SET @Zahl = 0x1100000

     

    if (@Zahl & 0x0100000) = 0x0100000

    BEGIN

       --Hier soll der &H0100000 von dem gesamten Wert subtrahiert werden

       SET @Zahl = @Zahl - 0x0100000

       PRINT 'Passt'

    END

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 18. März 2011 10:59
  • Und wenn Du noch das Ergebnis als Hex kontrollieren willst:

    SELECT master.sys.fn_varbintohexstr(@Zahl)


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 18. März 2011 11:24

Alle Antworten

  • Hallo,

    da ist so ziemlich alles falsch. Hex-Werte werden nicht mit Präfix &H sondern mit 0x dargestellt; Werte mit && und nicht mit AND, Variablen mussen mit SET zugewiesen usw.

    So geht es:

    declare @Zahl int

    SET @Zahl = 0x1100000

     

    if (@Zahl & 0x0100000) = 0x0100000

    BEGIN

       --Hier soll der &H0100000 von dem gesamten Wert subtrahiert werden

       SET @Zahl = @Zahl - 0x0100000

       PRINT 'Passt'

    END

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 18. März 2011 10:59
  • danke dir sehr Olaf :)

    werde es mir merken

    Freitag, 18. März 2011 11:18
  • Und wenn Du noch das Ergebnis als Hex kontrollieren willst:

    SELECT master.sys.fn_varbintohexstr(@Zahl)


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Freitag, 18. März 2011 11:24