AFAIK alle drei der folgenden Tests sollten wahr (t
) zurückgeben. Sie funktionieren tatsächlich, wenn ich COLLATE "de_DE"
anhänge.PostgreSQL-Muster Übereinstimmung auf Umlauten
Ich führe dies auf einem interaktiven Datenbank-Terminal, also nicht sicher, die Kollation in Kraft getreten ist? Kann ich irgendwie überprüfen, welche Kollatierung in Kraft ist, und wenn ja, ändern Sie sie, ohne die (UTF-8-codierten) Daten zu ändern?
version
------------------------------------------------------------------------------------------------
PostgreSQL 9.4.13 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
=> SELECT 'Ü' ~* 'Ü';
?column?
----------
t
=> SELECT 'Ü' ~* 'ü';
?column?
----------
f
=> SELECT 'Ü' ~* '\mÜ';
?column?
----------
f
Alternativ gibt es eine Möglichkeit, die Mustererkennung Umlaut-unempfindlich zu machen, das heißt haben 'Ü' ~*SOMETHINGHERE '\mU'
Rückkehr t
? Oder sollte ich einfach COLLATE
an alle meine Abfragen anhängen? Oder sollte ich einfach folgendes ausführen, wird das eigentlich nicht die Daten berühren, nur Lookup-Verhalten und Indizes?
ALTER TABLE articles ALTER COLUMN title SET DATA TYPE VARCHAR(255) COLLATE "de_DE";