2013-09-21 1 views
0

Почему функция SQLite hex() возвращает 31 для hex (1).sqlite hex (1) возвращает 31?

Например я:

select hex(1) from mytable; 

И я получаю 31, но она не должна возвращать 1?

Thanks, Carlos.

+1

Код ASCII '1' составляет 49. Дек 49 - это шестнадцатеричный 31. Это то, что вы получаете. –

ответ

1

Потому что:

шестигранных() Функция интерпретирует свой аргумент как BLOB и возвращает строку которая является верхним регистром шестнадцатеричного отображения содержимого из этого сгустка.

Функция hex() преобразует значение BLOB в шестнадцатеричное текстовое представление. Данные параметров считаются BLOB. Если это не BLOB, он будет преобразован в один. Возвращаемое текстовое значение будет содержать два шестнадцатеричных символа для каждого байта в BLOB.

+0

Хорошо ... Можно ли получить Hex (1) = 1? – QLands

+0

@QLands Функция hex() преобразует значение BLOB в шестнадцатеричное текстовое представление ... Так что это кажется невозможным ... – aleroot

+1

Дополнительный внутренний фон: sqlite хранит все как текст. – thammi

Смежные вопросы