Suponha que criamos uma tabela e inserimos um registro com o seguinte script.
CREATE TABLE your_table ( your_column VARCHAR COLLATE "tr-TR-x-icu" );
INSERT INTO your_table(your_column) VALUES ('Gider');
Quando executei o script revisado a seguir, obtive o resultado 'diferente'. O resultado deve ser 'igual', pois eu uso o agrupamento "tr-TR-x-icu" da coluna e a parte superior do texto 'Gider' é 'GİDER' em turco.
SELECT
CASE WHEN UPPER(your_column)=UPPER('Gider') THEN 'equal'
ELSE 'not equal'
END AS result
FROM your_table;
Quando executei o script a seguir, obtive a resposta correta (ou seja, 'igual').
SELECT
CASE WHEN UPPER(your_column)=UPPER('Gider' COLLATE "tr-TR-x-icu") THEN 'equal'
ELSE 'not equal'
END AS result
FROM your_table;
Seria bom se houvesse um método para definir esta propriedade de agrupamento dentro desta sessão.
Por exemplo, adicionando like SET COLLATE...
logo antes da consulta.
Desta forma, em vez de escrever UPPER(your_column)=UPPER('Gider' COLLATE "tr-TR-x-icu")
, bastaria apenas escrever UPPER(your_column)=UPPER('Gider')
.
Eu ficaria feliz se alguém pudesse oferecer uma solução.
Muitas felicidades.
Se você deseja que o agrupamento padrão seja
tr-TR-x-icu
, crie seu banco de dados com o agrupamento ICU apropriado (a partir da v15):Em seguida, conecte-se ao banco de dados e ele se comportará como você deseja: