powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка текстового значения как целочисленного
10 сообщений из 10, страница 1 из 1
Сортировка текстового значения как целочисленного
    #39404796
smn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
smn
Гость
Добрый день! Есть таблица с ценами. Тип поля цены - TEXT, надо выводить значения поля от меньшего к большему.
Есть пробел между тысячной и сотой цифрой. До пробела, как видно ниже, сортировка корректная, дальше вразброс.

Вот что получается при запросе
Код: sql
1.
SELECT price, CAST(price AS signed) FROM table ORDER BY CAST(price AS signed)



price CAST (price AS signed)



8 791 8

8 791 8

8 082 8

9 374 9

9 823 9

10 186 10

12 698 12

12 257 12

13 959 13

14 920 14

14 463 14

15 132 15

16 117 16

16 023 16

16 606 16

Просьба пояснить как правильно отсортировать или хотя бы намекнуть. Как вообще обычно в таких случаях делается сортировка? Ведь стоимость зачастую вносится в БД в таком формате (X XXX)
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404822
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
CAST(REPLACE(price,' ','') AS signed)
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404824
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smnстоимость зачастую вносится в БД в таком формате (X XXX)Вообще-то никогда. Надо отличать значение от его отображения на экране. И то, что значение ХРАНИТСЯ с паразитными пробелами, это более чем нехорошо.
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404826
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоимость хранится в numeric/decimal или int (соответственно в центах/копейках/etc вместо рублей/долларов/евро).
Как она выводится и в каком формате циферки удобнее вносить - задача приложения.
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404849
smn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
smn
Гость
авторSELECT CAST(REPLACE(price,' ','') AS signed) FROM table ORDER BY CAST(REPLACE(price,' ','') AS signed)
Тоже выдает только тысячные
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404855
smn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
smn
Гость
Akinasmnстоимость зачастую вносится в БД в таком формате (X XXX)Вообще-то никогда. Надо отличать значение от его отображения на экране. И то, что значение ХРАНИТСЯ с паразитными пробелами, это более чем нехорошо.

Тогда вопрос бы и не возник. Выгрузка из 1С происходит в текстовом формате. На этот процесс повлиять не могу, равно как и менять что-то в таблице. Задача стоит только корректно рассортировать при выводе данных.
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404861
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smn,

Ну уберите пробелы REPLACE-ом.

smnВыгрузка из 1С происходит в текстовом формате. На этот процесс повлиять не могу, равно как и менять что-то в таблице.На выгрузку повлиять не можете, это понятно. Но на загрузку-то в MySQL почему не можете?
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404879
smn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
smn
Гость
авторНу уберите пробелы REPLACE-ом.

Я это и пытаюсь сделать, но не могу понять, что не так делаю: как я понял, при значении 9 823 , REPLACE (9 823,' ','') должно выдавать 9823 , а у меня в запросе выводится 9 , т.е. только то, что до пробела.
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404884
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinasmnстоимость зачастую вносится в БД в таком формате (X XXX)Вообще-то никогда. Надо отличать значение от его отображения на экране. И то, что значение ХРАНИТСЯ с паразитными пробелами, это более чем нехорошо.

Вот это и называется "нарушение доменной целостности данных".
Избавляйтесь!
...
Рейтинг: 0 / 0
Сортировка текстового значения как целочисленного
    #39404915
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smnкак я понял, при значении 9 823 , REPLACE (9 823,' ','') должно выдавать 9823 , а у меня в запросе выводится 9 , т.е. только то, что до пробела.Да щазз!!! Вот посмотри в теге кода (это кнопка SRC над полем ввода, пользуйся, кстати, ею, а не QUOTE) твой вариант и правильный:

Код: sql
1.
2.
REPLACE (9 823,' ','')
REPLACE('9 823',' ','')
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка текстового значения как целочисленного
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]