insertar - tipo de dato para telefono en mysql
No se puede ver el valor de campo BIT de MySQL al usar SELECT (4)
Los valores de bit se devuelven como valores binarios. Para mostrarlos en forma imprimible, agregue 0 o use una función de conversión como BIN ().
https://dev.mysql.com/doc/refman/5.7/en/bit-field-literals.html
my_table
contiene el campo enabled
que se define como: enabled BIT NOT NULL DEFAULT 0
.
Esta tabla tiene varias filas con enabled = b''0''
, y varias filas con enabled = b''1''
.
Sin embargo, ambos esto:
SELECT * from my_table WHERE enabled = b''0'';
y esto:
SELECT * from my_table WHERE enabled = b''1'';
mostrar en blanco en la columna enabled
:
+----+---------+
| id | enabled |
+----+---------+
| 1 | |
| 2 | |
+----+---------+
¿Porqué es eso? ¿Cómo podría ver el valor del campo enabled
?
$ mysql --version
mysql Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1
La razón por la cual no se puede ver en el terminal es porque los valores de los bits no son caracteres imprimibles.
Permite insertar los siguientes valores:
INSERT INTO `my_table` (`ID`, `enabled`)
VALUES (1,b''1''),(2,b''0'');
Luego, selecciónalos para archivar:
mysql> SELECT * FROM my_table INTO OUTFILE ''/tmp/my_table.txt'' FIELDS TERMINATED BY '','' ENCLOSED BY ''"'' LINES TERMINATED BY ''/n'';
Primero, /tmp/my_table.txt
nuestro archivo /tmp/my_table.txt
como texto sin formato:
"1", ""
"2", ""
y luego en vista hexadecimal:
22 31 22 2C 22 01 22 0A 22 32 22 2C 22 00 22 0A
Para poder ver esos valores, simplemente puedes CAST
en SELECT
:
SELECT id, CAST(enabled AS UNSIGNED) AS enabled FROM my_table
Y eso producirá el siguiente resultado:
+----+---------+
| id | enabled |
+----+---------+
| 1 | 1 |
| 2 | 0 |
+----+---------+
2 rows in set (0.00 sec)
Otra forma de hacerlo es
SELECT enabled+0 from my_table
la forma más simple es la función ORD
:
SELECT ORD(`enabled`) AS `enabled` FROM `my_table`