- vừa được xem lúc

Postgresql - Tìm kiếm tiếng việt không dấu

0 0 15

Người đăng: Lê Anh

Theo Viblo Asia

Một ngày đẹp trời bạn cần so sánh, tìm kiếm chuỗi có dấu và chuỗi không dấu với Database Postgresql có dữ liệu là tiếng Việt. Bài viết này tôi sẽ hướng dẫn 2 cách để convert tiếng Việt có dấu thành không dấu trong Postgresql.

1. Cách đầu tiên là viết 1 function convert thủ công để replace

Với cách này, sẽ giúp bạn hình dung cơ chế convert tiếng Việt có dấu thành không dấu như thế nào. Khi bạn muốn convert language này sang language khác cũng có thể làm như này. Ngoài ra, nó còn giúp ta maintance tốt hơn, chủ động hơn. Nhược điểm của nó là tốc độ có thể chậm hơn so với cách thứ 2

CREATE OR REPLACE FUNCTION convertTVkdau (x text) RETURNS text AS
$$
DECLARE codau text; kdau text; r text;
BEGIN codau = 'áàảãạâấầẩẫậăắằẳẵặđéèẻẽẹêếềểễệíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵÁÀẢÃẠÂẤẦẨẪẬĂẮẰẲẴẶĐÉÈẺẼẸÊẾỀỂỄỆÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲỶỸỴ'; kdau = 'aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyyAAAAAAAAAAAAAAAAADEEEEEEEEEEEIIIIIOOOOOOOOOOOOOOOOOUUUUUUUUUUUYYYYY'; r = x; FOR i IN 0..length(codau) LOOP r = replace(r,substr(codau,i,1), substr(kdau,i,1)); END LOOP; RETURN r;
END;
$$ LANGUAGE plpgsql;

Sau đó, ta sẽ áp dụng function trên với câu lệnh select sau:

SELECT converttvkdau('Hàm convert tiếng việt có dấu');

Thì sẽ nhận được kết quả:

Ham convert tieng viet co dau

2. Cách thứ hai là dùng hàm có sẵn được hỗ trợ Unaccent

Trước hết để sử dụng được hàm Unaccent này cần tạo Extension

CREATE EXTENSION unaccent;
SELECT unaccent('Hàm convert tiếng việt có dấu')

Bình luận

Bài viết tương tự

- vừa được xem lúc

002: Hiểu về Index để tăng performance với PostgreSQL P1

Bài viết nằm trong series Performance optimization với PostgreSQL. Từ bài này sẽ liên quan nhiều đến practice nên các bạn chuẩn bị env và data trước.

0 0 500

- vừa được xem lúc

003: Hiểu về Index để tăng performance với PostgreSQL P2

Bài viết nằm trong series Performance optimization với PostgreSQL. . . B-Tree index.

0 0 527

- vừa được xem lúc

004: Hiểu về Index để tăng performance với PostgreSQL P3

Bài viết nằm trong series Performance optimization với PostgreSQL. . 1) What. Trước khi đi vào chi tiết, cùng xem lại nhiệm vụ, tính chất của hash function:.

0 0 120

- vừa được xem lúc

Hiểu về Join để tăng performance với PostgreSQL

Bài viết nằm trong series Performance optimization với PostgreSQL. Chúng ta biết có 4 loại join cơ bản sau:. . .

0 0 186

- vừa được xem lúc

006: Partitioning data với PostgreSQL P1

Bài viết nằm trong series Performance optimization với PostgreSQL. 1) Horizontal & Vertical partitioning.

0 0 71

- vừa được xem lúc

007: Partitioning data với PostgreSQL P2

Bài viết nằm trong series Performance optimization với PostgreSQL. . . Partition by list.

0 0 87