powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UTF8 и сортировка кириллицы
8 сообщений из 8, страница 1 из 1
UTF8 и сортировка кириллицы
    #38794544
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
база в ru_UA.UTF8
вывод данных по order by

АБанк
_Нет данных

Хотя по идее _Нет данных должен быть первым
пробовал ()Нет данных - то же самое

Происходит игнор символов не букв

Как это побороть ?
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38794564
масдай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Perederiyбаза в ru_UA.UTF8
вывод данных по order by

АБанк
_Нет данных

Хотя по идее _Нет данных должен быть первым
пробовал ()Нет данных - то же самое

Происходит игнор символов не букв

Как это побороть ?поставить субду на масдай (бггг)

-- в обчем читайте тут про локаль, субду и сортировки -- для общего образования (там, где участвовал Ёш)

-- ваша же задача решается иначе
Код: sql
1.
2.
3.
...
ORDER BY CASE fld WHEN 'Нет данных
' THEN 0 ELSE 1 END, fld
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38794826
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
масдай,

задача решается значительно проще - 1_Нет данных

полагаю, что это очередной баг постгреса (типа 30 дней в марте)
надо бы проверить при ru_RU.UTF8

на винду никто при здравом рассудке ничего не ставит
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38794859
масдай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Perederiyмасдай,

задача решается значительно проще - 1_Нет данных

полагаю, что это очередной баг постгреса (типа 30 дней в марте)
надо бы проверить при ru_RU.UTF8

на винду никто при здравом рассудке ничего не ставит
нет, это иллюзия , свойственная <...>
рано или поздно ползатель заводит "0_есть данные" и приходит к вам с законной претензией.

таки задача решается или именно в том стиле, в каком я предлагаю, либо ORDER BY .... NULLS FIRST + клиентское форматирование NULL -а як <Нет данных>

а то, что веками висящий в чати <...>, на 10 году на форуме этого не знает -- это его проблемы


а по поводу сортировки -- правильная текстовая сортировка только в масдае. в х-сах -- хитромудрые рукожопы придумали свою. читайте архивы форума - тут оно есть.

по поводу "30 дней в марте" -- приведите будем посмотреть, вам на слово не верю.
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38794885
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
По идее, postgresql использует доступную в системе локаль 22.1. Locale Support

Код: plaintext
1.
2.
3.
4.
> psql -t -c "select * from (values ('\`Нет данных'), ('Нет данных'), ('_Нет данных'), ('данных _Нет ')) as x(x) order by 1"
 данных _Нет
 Нет данных
 `Нет данных
 _Нет данных
Код: plaintext
1.
2.
3.
4.
> echo -e "\`Нет данных\n_Нет данных\nНет данных\nданных _Нет"|sort
данных _Нет
Нет данных
`Нет данных
_Нет данных

Теоретически, можно накатить патч для использвония ICU от 1Ц или FreeBSD
(хотя, может это одно и тоже не пробовал, не проверял)
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38794943
Perederiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
масдай,

1) "1_Нет данных" завожу или я или админ БД. Никаких юзеров
Задача этой записи - быть ПЕРВОЙ в выборке, И все
так что подойдет и "0_Нет данных"

У меня эта выборка используется в десятках отчетов и sql запросах в тексте проги
так что переделывать все это я не буду
Просто не хватит нервов все это искать и переделывать

2) SELECT EXTRACT(DAY FROM (date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month') - date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))) as dnimes

выдаст 30

Что характерно, для других месяцев считает верно
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38795035
V&N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
V&N
Гость
Perederiy...
полагаю, что это очередной баг постгреса (типа 30 дней в марте)
...
Напомните, кода переводят часы на летнее время для вашего часового пояса?
приводите всё к типу DATE, а потом делайте вычитание.
...
Рейтинг: 0 / 0
UTF8 и сортировка кириллицы
    #38795050
масдай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Perederiyмасдай,

1)<>
Задача этой записи - быть ПЕРВОЙ в выборке, И все

ну какбе я знаю, в каких целях выводят эту запись

т.ч. обобщенный рецепт -- см выше

дада, и духовое ружжо

Perederiy2) SELECT EXTRACT(DAY FROM (date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month') - date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))) as dnimes

выдаст 30

Что характерно, для других месяцев считает верно

что харакетрно -- выдало 31 (у меня другая таймзона).
забавно, не правда ли, что я сразу вам не поверил.
и да впечатления от вашей работы с датами - убийственные.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 SELECT EXTRACT(DAY FROM (date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month') - date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))) as dnimes 
 ,(date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month') - date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))
 ,to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month'
 ,date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY'))


  ,(to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month' )::date
 ,(date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))::date
-- 31,'31 days','2014-04-01 00:00:00','2014-03-01 00:00:00+04','2014-04-01','2014-03-01'

---це еуропа: --
 SET timezone TO  'EET';
 SHOW timezone;--'EET'

SELECT EXTRACT(DAY FROM (date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month') - date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))) as dnimes 
 ,(date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month') - date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))
 ,to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month'
 ,date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY'))


  ,(to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month' )::date
 ,(date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))::date 
 ,(to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY') + interval '1 month' )::date
  - (date_trunc('month', to_date('01-'||to_char(3,'99')||'-'||to_char(2014,'9999'),'DD-MM-YYYY')))::date ;
  -- 30,'30 days 23:00:00','2014-04-01 00:00:00','2014-03-01 00:00:00+02','2014-04-01','2014-03-01',31
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UTF8 и сортировка кириллицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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