Size: a a a

pgsql – PostgreSQL

2020 June 16

JS

John Stellmann in pgsql – PostgreSQL
Yaroslav Schekin
Ну не показывайте / не отвечайте на конкретные вопросы — это не наша проблема, в конце концов. ;)
Походу нельзя просто взять и проапдейтить какуюто из часте CompositeKey, помогло удаление и вставка
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
John Stellmann
Походу нельзя просто взять и проапдейтить какуюто из часте CompositeKey, помогло удаление и вставка
Это т.н. чушь.
А known issue здесь — это то, что Вы не читаете, что Вам пишут, IMNSHO.
И да, выделение некоторого количества случайных слов в ответ на чьи-то вопросы ответом не является, just FYI.
источник

s

sexst in pgsql – PostgreSQL
Кракозябр Кракозябрович
Приветсвую.
Столкнулся с интересной проблемой. Требуется регистронезависимый поиск вхождения подстроки в таблице. Пробовал
SELECT post, id FROM users WHERE post ILIKE '%начальник%';
SELECT post, id FROM users WHERE post ~* 'начальник';
SELECT post, id FROM users WHERE LOWER(post) ~* LOWER('начальник');
В общем различные комбинации ~*
Все варианты не работают пока не напишешь "Начальник", я блин что-то не так делаю или у нас меркурий не  в том юпитере и база просто тупит?
SHOW LC_CTYPE;
SHOW LC_COLLATE;
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Кракозябр Кракозябрович
Приветсвую.
Столкнулся с интересной проблемой. Требуется регистронезависимый поиск вхождения подстроки в таблице. Пробовал
SELECT post, id FROM users WHERE post ILIKE '%начальник%';
SELECT post, id FROM users WHERE post ~* 'начальник';
SELECT post, id FROM users WHERE LOWER(post) ~* LOWER('начальник');
В общем различные комбинации ~*
Все варианты не работают пока не напишешь "Начальник", я блин что-то не так делаю или у нас меркурий не  в том юпитере и база просто тупит?
А у меня работает всё это. С таким, например:
WITH users(post, id) AS (
  VALUES ('Начальник', 1),
         ('Не начальник', 2),
         ('Кто-то ещё', 3)
)
SELECT ...

Похоже на проблемы с collation.
источник

КК

Кракозябр Кракозябро... in pgsql – PostgreSQL
sexst
SHOW LC_CTYPE;
SHOW LC_COLLATE;
Оно?
источник

s

sexst in pgsql – PostgreSQL
Кракозябр Кракозябрович
Оно?
Ну так юникодом и не пахнет
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Кракозябр Кракозябрович
Оно?
Оно, конечно:
WITH users(post, id) AS (
  VALUES ('Начальник' COLLATE "C", 1),
         ('Не начальник', 2),
         ('Кто-то ещё', 3)
)
SELECT post, id FROM users WHERE post ~* 'начальник';
источник

s

sexst in pgsql – PostgreSQL
Был бы юникод задан, было бы так:

junkydb=# SHOW LC_COLLATE;
lc_collate  
-------------
en_US.UTF-8
(1 row)

junkydb=# SHOW LC_CTYPE;
 lc_ctype  
-------------
en_US.UTF-8
(1 row)

junkydb=# select lower('НачалЬникА');
  lower    
------------
начальника
(1 row)
источник

КК

Кракозябр Кракозябро... in pgsql – PostgreSQL
sexst
Был бы юникод задан, было бы так:

junkydb=# SHOW LC_COLLATE;
lc_collate  
-------------
en_US.UTF-8
(1 row)

junkydb=# SHOW LC_CTYPE;
 lc_ctype  
-------------
en_US.UTF-8
(1 row)

junkydb=# select lower('НачалЬникА');
  lower    
------------
начальника
(1 row)
тоесть теперь гуглить как менять/починять кодировку?
источник

КК

Кракозябр Кракозябро... in pgsql – PostgreSQL
Yaroslav Schekin
Оно, конечно:
WITH users(post, id) AS (
  VALUES ('Начальник' COLLATE "C", 1),
         ('Не начальник', 2),
         ('Кто-то ещё', 3)
)
SELECT post, id FROM users WHERE post ~* 'начальник';
сложнааа покачто)
источник

s

sexst in pgsql – PostgreSQL
Кракозябр Кракозябрович
тоесть теперь гуглить как менять/починять кодировку?
Могу и так сказать - создать базу с нужной кодировкой и перекинуть туда данные
источник

s

sexst in pgsql – PostgreSQL
Потому что на ходу оно не меняется
источник

КК

Кракозябр Кракозябро... in pgsql – PostgreSQL
какое счастье что не прод база
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Кракозябр Кракозябрович
какое счастье что не прод база
Тогда легче пересоздать.
Хотя, такой подход (когда collation базы "C", а только для тех полей, где нужны другие, они задаются явно) — это тоже вариант, в принципе.
источник

s

sexst in pgsql – PostgreSQL
Yaroslav Schekin
Тогда легче пересоздать.
Хотя, такой подход (когда collation базы "C", а только для тех полей, где нужны другие, они задаются явно) — это тоже вариант, в принципе.
Если данные там уже лежат, то почти наверняка человек, не знавший про collation, их умудрится поломать. Собственно, насколько я в теме, не просто так оно на ходу не меняется.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Если данные там уже лежат, то почти наверняка человек, не знавший про collation, их умудрится поломать. Собственно, насколько я в теме, не просто так оно на ходу не меняется.
> то почти наверняка человек, не знавший про collation, их умудрится поломать.

Это да. Подход "default C + индивидуальные" нужно применять осознанно, конечно.

> Собственно, насколько я в теме, не просто так оно на ходу не меняется.

Потому что всё (индексы, например), что упорядочено без явной collation, идёт по порядку default — как тут поменяешь, на практике (разве что перезаписать это всё)? Поэтому и возможности нет, наверное (работы по реализации было бы много — практического толка где-то 0).
источник

s

sexst in pgsql – PostgreSQL
> Потому что всё (индексы, например), что упорядочено без явной collation, идёт по порядку default — как тут поменяешь,

Ну да, я к тому и веду, что много чего тут же в тыкву превратится)
источник

КК

Кракозябр Кракозябро... in pgsql – PostgreSQL
sexst
Был бы юникод задан, было бы так:

junkydb=# SHOW LC_COLLATE;
lc_collate  
-------------
en_US.UTF-8
(1 row)

junkydb=# SHOW LC_CTYPE;
 lc_ctype  
-------------
en_US.UTF-8
(1 row)

junkydb=# select lower('НачалЬникА');
  lower    
------------
начальника
(1 row)
я ж забыл сказать, бд сейчас временно на маке развёрнута. Я так понимаю раньше точно была проблема с кириллицей там🤨
источник

Б

Борис in pgsql – PostgreSQL
есть чат по MSSQL?
источник

Б

Борис in pgsql – PostgreSQL
спасибо
источник