thể trùng lặp:
Does PostgreSQL support “accent insensitive” collations?Chức năng để loại bỏ dấu trong PostgreSQL
Tôi đang cố gắng để loại bỏ các điểm nhấn như vậy khi tôi thực hiện một CHỌN nó bỏ qua chúng.
Ví dụ:
SELECT * FROM table WHERE
table.id ILIKE 'Jose';
Nó trả về:
José
Jose
Jósé
Jóse
hoặc một cái gì đó như thế.
Tôi tìm thấy các chức năng này và chúng không hoạt động, tôi nghĩ rằng có thể thực tế là tôi đang sử dụng Struts 1.X, vui lòng kiểm tra và cho tôi biết tôi đang ở đâu hoặc tôi nên làm gì sử dụng.
FIRST CHỨC NĂNG
CREATE OR REPLACE FUNCTION unaccent_string(text) RETURNS text AS $$
DECLARE
input_string text := $1;
BEGIN
input_string := translate(input_string, 'âãäåāăąÁÂÃÄÅĀĂĄ', 'aaaaaaaaaaaaaaa');
input_string := translate(input_string, 'èééêëēĕėęěĒĔĖĘĚ', 'eeeeeeeeeeeeeee');
input_string := translate(input_string, 'ìíîïìĩīĭÌÍÎÏÌĨĪĬ', 'iiiiiiiiiiiiiiii');
input_string := translate(input_string, 'óôõöōŏőÒÓÔÕÖŌŎŐ', 'ooooooooooooooo');
input_string := translate(input_string, 'ùúûüũūŭůÙÚÛÜŨŪŬŮ', 'uuuuuuuuuuuuuuuu');
return input_string;
END;
$$ LANGUAGE plpgql;
CHỨC NĂNG THỨ HAI
CREATE OR REPLACE FUNCTION norm_text_latin(character varying)
RETURNS character varying AS
$BODY$
declare
p_str alias for $1;
v_str varchar;
begin
select translate(p_str, 'ÀÁÂÃÄÅ', 'AAAAAA') into v_str;
select translate(v_str, 'ÉÈËÊ', 'EEEE') into v_str;
select translate(v_str, 'ÌÍÎÏ', 'IIII') into v_str;
select translate(v_str, 'ÌÍÎÏ', 'IIII') into v_str;
select translate(v_str, 'ÒÓÔÕÖ', 'OOOOO') into v_str;
select translate(v_str, 'ÙÚÛÜ', 'UUUU') into v_str;
select translate(v_str, 'àáâãäå', 'aaaaaa') into v_str;
select translate(v_str, 'èéêë', 'eeee') into v_str;
select translate(v_str, 'ìíîï', 'iiii') into v_str;
select translate(v_str, 'òóôõö', 'ooooo') into v_str;
select translate(v_str, 'ùúûü', 'uuuu') into v_str;
select translate(v_str, 'Çç', 'Cc') into v_str;
return v_str;
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Cả hai chức năng tạo ra các lỗi sau khi tôi chạy tập tin trong NetBeans:
ERROR: unterminated dollar-quoted string at or near "*the string that starts the function*"
tạo Index không làm việc, kể từ unaccent không phải là bất biến. – usamec