У меня есть запрос:MySQL char_length возвращает неверные результаты
select number,char_length(number) from all_numbers where char_length(number)!=10 and number='7034420082';
Результаты:
+-------------+---------------------+
| number | char_length(number) |
+-------------+---------------------+
| 7034420082 | 11 |
+-------------+---------------------+
, как это возможно? количество символов составляет 10 символов. я подтвердил, что на каждой стороне номера нет пробела.
mysql> explain all_numbers;
+--------------------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+------------+-------+
| number | varchar(16) | NO | PRI | | |.....
не может подтвердить. 'SELECT CHAR_LENGTH (CAST (7034420082 AS CHAR (16)))' дает мне '10', как и предполагалось. Вы также сказали: «Где номер не« 7034420082 », поэтому я предполагаю, что у вас есть ** что-то **, добавленное к концу/началу. Белый интервал/новые строки/etc? – h2ooooooo
Что делает 'SELECT HEX (number) FROM all_numbers WHERE char_length (number)! = 10 AND number = '7034420082' 'output? – h2ooooooo
h2oooooo, в веб-приложении, которое использует этот db, я сделал следующее: Php echo ":". $ row ['number']. ":"?> это показало: 7034420082: что говорит мне, что нет свободного пробела ... результат hex равен 3730333434323030383220 – bart2puck