Можно ли конвертировать текст в число в запросе MySQL? У меня есть столбец с идентификатором, который состоит из имени и числа в формате «имя-номер». Столбец имеет тип VARCHAR. Я хочу отсортировать строки по номеру (строки с одинаковым именем), но столбец отсортирован в соответствии с порядком символов, т.е.
name-1
name-11
name-12
name-2
Если я урежу число, могу ли я преобразовать число 'varchar' в 'реальное' число и использовать его для сортировки строк? Я хотел бы получить следующий заказ.
name-1
name-2
name-11
name-12
Я не могу представить число в виде отдельного столбца.
отредактировано 2011-05-11 9:32
Я нашел следующее решение ... ORDER BY column * 1
. Если имя не будет содержать цифр, будет ли сохранено использование этого решения?
name
может быть любая последовательность букв.Ответы:
Это должно работать:
источник
Вы можете использовать
SUBSTRING
иCONVERT
:Где
name_column
находится столбец со значениями «name-». КомандаSUBSTRING
удаляет все до шестого символа (то есть префикса «name-»), а затемCONVERT
преобразует оставшееся в настоящее целое число.ОБНОВЛЕНИЕ : Учитывая изменяющиеся обстоятельства в комментариях (то есть префикс может быть любым), вам придется добавить
LOCATE
в смесь:Это, конечно, предполагает, что в нечисловом префиксе нет дефисов, но соответствующий комментарий говорит, что:
так что это должно быть безопасным предположением.
источник
SUBSTRING(name_column, 6)
. Я знаю, вы опубликовали это, когда он не сказал нам этого ...Просто используйте CAST,
Тип результата приведения может быть одним из следующих значений:
источник
Вы можете использовать CAST () для преобразования из строки в int. например
SELECT CAST('123' AS INTEGER);
источник
SELECT CAST('123' AS SIGNED INTEGER);
илиSELECT CAST('123' AS UNSIGNED INTEGER);
заставить его работать.источник
один простой способ ВЫБРАТЬ «123» + 0
источник
Чтобы получить число, попробуйте
SUBSTRING_INDEX(field, '-', 1)
затем преобразовать.источник
если ваш первичный ключ представляет собой строку в формате, подобном
ABC / EFG / EE / 13/123 (порядковый номер),
этот тип строки можно легко использовать для сортировки с разделителем ("/")
мы можем использовать следующий запрос для заказа таблицы с этим типом ключа
источник
источник
Общий способ сделать:
источник