2016-04-03 2 views
0

Ich habe in der Lage gewesen, mit substring(colname, N, 1) den N-te Byte aus dem Feld zu bekommen, aber an diesem Punkt scheint es unmöglich, das Ergebnis als binär zu behandeln:Wie bekomme ich binäre Operationen auf dem N-ten Byte in meiner varbinary-Spalte?

> select substring(colname, N, 1) from [...] 
\ 
> select hex(substring(colname, N, 1)) from [...] 
5C 
> select hex(substring(colname, N, 1) & 0xff) from [...] 
0 
> select cast(substring(colname, N, 1) as unsigned integer) from [...] 
0 

Im Vergleich zu:

> select cast(0x5c as binary); 
\ 
> select hex(0x5c & 0xff); 
5C 
> select cast(0x5c as unsigned integer); 
92 

Was ich mit am Ende wollen, ist so etwas wie dieses:

> select [...] where substring(colname, N, 1) & 0b00100000 = 0b00100000; 

Antwort

1

Versuchen Sie etwas wie das:

select ascii(substring(colname,N,1)) from [...] 
+0

Das funktioniert, aber warum ?? – l0b0

+0

Sie benötigen den Code Ihres N-ten Zeichens, um damit zu arbeiten. Funktion ascii (..) gibt den Code zurück. –

Verwandte Themen