Hàm chuyển chuỗi có dấu (Unicode) thành không dấu trong sql

Bài này mình viết hàm chuyển một chuỗi ký tự có dấu (Unicode), chuyển thành chuỗi không dấu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
CREATE FUNCTION [dbo].[fuChuyenCoDauThanhKhongDau]
(
@strInput NVARCHAR(4000)
)
RETURNS NVARCHAR(4000)
AS
BEGIN
IF @strInput IS NULL RETURN @strInput
IF @strInput = ” RETURN @strInput
DECLARE @RT NVARCHAR(4000)
DECLARE @SIGN_CHARS NCHAR(136)
DECLARE @UNSIGN_CHARS NCHAR (136)
SET @SIGN_CHARS = N‘ăâđêôơưàảãạáằẳẵặắầẩẫậấèẻẽẹéềểễệế
ìỉĩịíòỏõọóồổỗộốờởỡợớùủũụúừửữựứỳỷỹỵý
ĂÂĐÊÔƠƯÀẢÃẠÁẰẲẴẶẮẦẨẪẬẤÈẺẼẸÉỀỂỄỆẾÌỈĨỊÍ
ÒỎÕỌÓỒỔỖỘỐỜỞỠỢỚÙỦŨỤÚỪỬỮỰỨỲỶỸỴÝ’
+NCHAR(272)+ NCHAR(208)
SET @UNSIGN_CHARS = N‘aadeoouaaaaaaaaaaaaaaaeeeeeeeeee
iiiiiooooooooooooooouuuuuuuuuuyyyyy
AADEOOUAAAAAAAAAAAAAAAEEEEEEEEEEIIIII
OOOOOOOOOOOOOOOUUUUUUUUUUYYYYYDD’
DECLARE @COUNTER int
DECLARE @COUNTER1 int
SET @COUNTER = 1
WHILE (@COUNTER <=LEN(@strInput))
BEGIN
SET @COUNTER1 = 1
–Tìm trong chuỗi mẫu
WHILE (@COUNTER1 <=LEN(@SIGN_CHARS)+1)
BEGIN
IF UNICODE(SUBSTRING(@SIGN_CHARS, @COUNTER1,1))
= UNICODE(SUBSTRING(@strInput,@COUNTER ,1) )
BEGIN
IF @COUNTER=1
SET @strInput = SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1)
+ SUBSTRING(@strInput, @COUNTER+1,LEN(@strInput)–1)
ELSE
SET @strInput = SUBSTRING(@strInput, 1, @COUNTER–1)
+SUBSTRING(@UNSIGN_CHARS, @COUNTER1,1)
+ SUBSTRING(@strInput, @COUNTER+1,LEN(@strInput)– @COUNTER)
BREAK
END
SET @COUNTER1 = @COUNTER1 +1
END
–Tìm tiếp
SET @COUNTER = @COUNTER +1
END
SET @strInput = replace(@strInput,‘ ‘,‘-‘)
RETURN @strInput
END
|
Ví dụ:
1
|
SELECT dbo.fuChuyenCoDauThanhKhongDau (N‘Tạo một hàm mã hoá với T-SQL’)
|
–Sẽ trả về kết quả là
1
|
Tao–mot–ham–ma–hoa–voi–T–SQL
|
Xem thêm