Hàm convert tiếng việt sang không dấu trong mysql

Lượt xem: 8098

Chào các bạn, vấn đề mình gặp phải trong việc search full text trong mysql. Khi mình search tiếng việt không dấu và tiếng việt có dấu. Về cơ bản nếu nhập tiếng việt có dấu thì kết quả vẫn ra đúng. Đặc biệt là khi các bạn search chữ đ d sẽ thấy kết quả khác nhau rõ rệt. Mình đã xử lý bằng cách bổ sung thêm hàm vi_to_en cho việc search full text này để việc where trong điều kiện search là tiếng việt không dấu. Các bạn tham khảo nhé

 


CREATE DEFINER=`root`@`localhost` FUNCTION `vi_to_en`(
`s` VARCHAR(255)
)
RETURNS varchar(255) CHARSET utf8mb4 COLLATE utf8mb4_general_ci
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE s_en VARCHAR(255);

SET @s_en = REPLACE(s,'à','a');
SET @s_en = REPLACE(@s_en,'á','a');
SET @s_en = REPLACE(@s_en,'ạ','a');
SET @s_en = REPLACE(@s_en,'ả','a');
SET @s_en = REPLACE(@s_en,'ạ','a');
SET @s_en = REPLACE(@s_en,'ã','a');
SET @s_en = REPLACE(@s_en,'â','a');
SET @s_en = REPLACE(@s_en,'ầ','a');
SET @s_en = REPLACE(@s_en,'ấ','a');
SET @s_en = REPLACE(@s_en,'ậ','a');
SET @s_en = REPLACE(@s_en,'ẩ','a');
SET @s_en = REPLACE(@s_en,'ẫ','a');
SET @s_en = REPLACE(@s_en,'ă','a');
SET @s_en = REPLACE(@s_en,'ằ','a');
SET @s_en = REPLACE(@s_en,'ắ','a');
SET @s_en = REPLACE(@s_en,'ặ','a');
SET @s_en = REPLACE(@s_en,'ẳ','a');
SET @s_en = REPLACE(@s_en,'ẵ','a');

SET @s_en = REPLACE(@s_en,'è','e');
SET @s_en = REPLACE(@s_en,'é','e');
SET @s_en = REPLACE(@s_en,'ẹ','e');
SET @s_en = REPLACE(@s_en,'ẻ','e');
SET @s_en = REPLACE(@s_en,'ẽ','e');
SET @s_en = REPLACE(@s_en,'ê','e');
SET @s_en = REPLACE(@s_en,'ề','e');
SET @s_en = REPLACE(@s_en,'ế','e');
SET @s_en = REPLACE(@s_en,'ệ','e');
SET @s_en = REPLACE(@s_en,'ể','e');
SET @s_en = REPLACE(@s_en,'ễ','e');

SET @s_en = REPLACE(@s_en,'ì','i');
SET @s_en = REPLACE(@s_en,'í','i');
SET @s_en = REPLACE(@s_en,'ị','i');
SET @s_en = REPLACE(@s_en,'ỉ','i');
SET @s_en = REPLACE(@s_en,'ĩ','i');


SET @s_en = REPLACE(@s_en,'ò','o');
SET @s_en = REPLACE(@s_en,'ó','o');
SET @s_en = REPLACE(@s_en,'ọ','o');
SET @s_en = REPLACE(@s_en,'ỏ','o');
SET @s_en = REPLACE(@s_en,'õ','o');
SET @s_en = REPLACE(@s_en,'ô','o');
SET @s_en = REPLACE(@s_en,'ồ','o');
SET @s_en = REPLACE(@s_en,'ố','o');
SET @s_en = REPLACE(@s_en,'ộ','o');
SET @s_en = REPLACE(@s_en,'ổ','o');
SET @s_en = REPLACE(@s_en,'ỗ','o');
SET @s_en = REPLACE(@s_en,'ơ','o');
SET @s_en = REPLACE(@s_en,'ờ','o');
SET @s_en = REPLACE(@s_en,'ớ','o');
SET @s_en = REPLACE(@s_en,'ợ','o');
SET @s_en = REPLACE(@s_en,'ở','o');
SET @s_en = REPLACE(@s_en,'ỡ','o');


SET @s_en = REPLACE(@s_en,'ù','u');
SET @s_en = REPLACE(@s_en,'ú','u');
SET @s_en = REPLACE(@s_en,'ụ','u');
SET @s_en = REPLACE(@s_en,'ủ','u');
SET @s_en = REPLACE(@s_en,'ũ','u');
SET @s_en = REPLACE(@s_en,'ư','u');
SET @s_en = REPLACE(@s_en,'ừ','u');
SET @s_en = REPLACE(@s_en,'ứ','u');
SET @s_en = REPLACE(@s_en,'ự','u');
SET @s_en = REPLACE(@s_en,'ử','u');
SET @s_en = REPLACE(@s_en,'ữ','u');

SET @s_en = REPLACE(@s_en,'ỳ','y');
SET @s_en = REPLACE(@s_en,'ý','y');
SET @s_en = REPLACE(@s_en,'ỵ','y');
SET @s_en = REPLACE(@s_en,'ỷ','y');
SET @s_en = REPLACE(@s_en,'ỹ','y');

SET @s_en = REPLACE(@s_en,'đ','d');



RETURN @s_en;

END