Подавить предупреждения CAST () в MySQL?

Я использую MySQL в строгом режиме ( SET sql_mode = 'STRICT_TRANS_TABLES' ) для преобразования всех предупреждений в ошибки. Однако у меня есть запрос, который ожидается для создания предупреждений, потому что он пытается преобразовать поле VARCHAR , которое может быть пустым или содержать буквы, в целое число.

Пример:

mysql> select CAST("123b" AS SIGNED);
+------------------------+
| CAST("123b" AS SIGNED) |
+------------------------+
|                    123 |
+------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '123b' |
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)

Есть ли способ подавить предупреждение, вызванное CAST () , без отключения строгого режима ? Или же можно отключить строгий режим для отдельного запроса или функции (что-то вроде оператора @ в PHP) без вызова SET ] дважды, чтобы временно отключить строгий режим?

Предыстория: у меня есть таблица с номерами домов. Большинство из них числовые, но некоторые содержат буквы в конце. Чтобы реализовать упрощенную «естественную сортировку», я хотел бы использовать ORDER BY CAST (StreetNr AS SIGNED), StreetNr , и значение, возвращаемое CAST (), было бы хорошо для сортировки 1-го уровня.

7
задан Udo G 28 June 2011 в 22:19
поделиться