Двоичные данные в MySQL - PullRequest
       20

Двоичные данные в MySQL

3 голосов
/ 09 января 2010

Мне нужно хранить двоичные данные, такие как 1110000, в MySQL. Когда я выбираю его, мне нужно, чтобы возвращаемое значение снова было таким же 1110000.

Какой тип данных мне следует использовать? Могу ли я использовать бит? Или лучше будет varbinary?

Ответы [ 2 ]

9 голосов
/ 09 января 2010

если вы имеете дело с двоичными числами, вы можете использовать битовое поле , например ::

bit(64)

- это битовое поле, содержащее до 64 значащих бит (максимально допустимый размер).

для вставки постоянных значений, вы можете использовать обозначение b'value 'следующим образом:

insert into bits values (b'0001001101001');

Вы можете преобразовать битовое поле в число, просто добавив 0 или используя cast (). есть также удобные функции bin (), hex () и oct () для печати значения в конкретной базе.

если нецифровый, varbinary или blob будут наиболее эффективным способом хранения. Также доступен двоичный файл (он будет дополнять более короткие значения нулевыми байтами).

если вы не хотите иметь дело с преобразованиями, вы можете сохранить строку в varchar или char. он будет занимать только в 8 раз больше места, чем компактный varbinary.

для вставки / чтения из вашего приложения вам нужно преобразовать вашу последовательность в упакованный байтовый массив, а затем сохранить упакованную строку в столбце varbinary. в C # вы можете использовать BitConverter. в php вы можете использовать pack / unpack.

1 голос
/ 22 ноября 2012

Надеюсь, этот код поможет вам:


для выбора:

     select conv(column_name, from_base, to_base) from table_name
     //example:
     select conv(column1, 10, 2) from table1;

для вставки:

     insert into table_name(column1) values( B'binary_data') ;
     //example : 
     insert into table1(column1) values( B'1110000');

для запроса:

    select column1,column2 from table_name where column1 & B('binary_data');
    //example: 
    select column1, column2 from table1 where column1 & B('1110000');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...