10/10/2018, 11:08

Hỏi về hàm chuyển từ chữ có dấu sang chữ không dấu trong sqlserver 2000

Mình đang lập trình trang web bằng ngôn ngữ asp.net(2005) sử dung csdl sqlserver 2000. Trong web này có chức năng tìm kiếm. Phần tìm kiếm bình thường(dùng làm like)thì mình đã làm được rồi.

Nhưng ở đây mình muốn làm nút tìm mà khi người dùng nhập vào chữ có dấu hay chữ không dấu đều tìm được(giống chức năng tìm kiếm của google)

vd: Nhập vào (vo tuan hai) có thể tìm được cả (vo tuan hai) hoặc (võ tuấn hải )

Mình đã nghĩ ra cách
- Trong csdl mình tạo thêm một cột ten_khong_dau để lưu tên không dấu
- Trong phần admin của web khi người quảng trị nhập vào text tên(ten_co_dau ) thì mình dùng câu lệnh sql cho nhập nội dung text này vào cột ten_co_dau rồi dùng câu lệnh khác để chuyển tất cả nội dung text có dấu này sang không dấu rồi nhập vào cột ten_khong_dau.
- Sau đó mình dùng hàm like cho cả hai cột này là có thể tìm vừa có dấu vừa không dấu
- Nhưng mình tìm mãi mà không thể nào tìm thấy được hàm nào có thể chuyển từ chử có dấu sang chử không dấu cả

Mong các bạn giúp đở.
tanky viết 13:10 ngày 10/10/2018
Bạn xem thử nếu nhập chữ không dấu nó có ra kết quả của những chữ có dấu không?
bietdivedau viết 13:15 ngày 10/10/2018
làm gì có hàm nào chuyển chữ có dấu <-> không dấu

bộ SQLSERVER nó ưu ái thiết kế cho việt nam mình xài thôi á ^^
tuanhaikh viết 13:12 ngày 10/10/2018
ý của bạn tanky là sao mình chưa hiểu
Khi nhập vào chữ có dấu thì nó chuyển thành chữ không dấu cho chữ không dấu làm sao nó biết chuyểnthaanhf chữ có dấu nào
vd:

viet nam -> việt nam hay -> viết nam

[=========> Bổ sung bài viết <=========]

bạn bietdivedau bạn khẳng định là không có hảm như vậy hả bạn
vậy bạn có cách nào giúp mình xử lý cái tìm kiếm không dấu cso dấu này k ?
Chỉ giúp mình với

[=========> Bổ sung bài viết <=========]

Trong php thì mình đã xem cách làm rồi. Xem cũng hiểu được pahanf nào chắc cũng làm được còn asp.net mình chưa nghỉ ra .

Các bạn giúp mình với

[=========> Bổ sung bài viết <=========]

À mình hiểu ý bạn tanky rồi

VD: Trong csdl của mình có dòng dữ liệu là : việt nam
thì khi mình nhập vào viet nam thì nó không tìm được còn khi mình nhập vào việt nam hay v hay...thì tìm được
bietdivedau viết 13:14 ngày 10/10/2018
khẳng định là không có cái hàm này.

Muốn có thì tự viết thôi:

a -> á,à,ả,ã,ạ,â,....
tương tự như vậy
á,à,ả,ã,ạ,â,.... -> a

khi gặp ký tự đó thì nó thay thế, nhưng mà cũng không hợp lý lắm, 1 chữ có biết bao nhiêu ký tự, mỗi ký tự có bao nhiêu dấu. Cứ thể tổ hợp chỉnh hợp lên thì nó chạy chậm rì

quên chuyên đó đi!
dinhanhency viết 13:22 ngày 10/10/2018
Được gửi bởi bietdivedau
khẳng định là không có cái hàm này.

Muốn có thì tự viết thôi:

a -> á,à,ả,ã,ạ,â,....
tương tự như vậy
á,à,ả,ã,ạ,â,.... -> a

khi gặp ký tự đó thì nó thay thế, nhưng mà cũng không hợp lý lắm, 1 chữ có biết bao nhiêu ký tự, mỗi ký tự có bao nhiêu dấu. Cứ thể tổ hợp chỉnh hợp lên thì nó chạy chậm rì

quên chuyên đó đi!
Tự viết hàm chuyển sang không dấu trong SQL.
Viết hàm này không có khó. Không ảnh hưởng đến xử lý nhiều.
tungoso viết 13:24 ngày 10/10/2018
cái này cũng rất đơn giản mà, ý tưởng của bạn là đúng rồi đó, tại file xử lý tìm kiếm thì bạn chuyển toàn bộ từ khóa thành không dấu rồi tìm trong ten_khong_dau là ok, mình hiện cũng đang dùng cách này để khi tìm có dấu hay không dấu sẽ cho ra cùng kết quả. Còn hàm thì như bietdivedau đã nói, tự viết trên nguyên tắc replace a,â,ă,.... bằng a, làm đủ cho các nguyên âm (a,e,i,...) và đ nữa là đc.
tuanhaikh viết 13:19 ngày 10/10/2018
Mình đã nghiên cứu nhưng vẫn chưa viết được bằng cách dùng hàm replace.
Bạn nào đã viết rồi thì post lên cho mình xin code được k ?
Code VB càn tốt tại mình đang viết bằng VB

Cảm ơn nhiều
bietdivedau viết 13:19 ngày 10/10/2018
suy nghĩ nhiều 1 chút sẽ làm ra thôi. có vậy mà đã nhờ vả sau này còn nhiều ct phức tạp hơn đó bạn
tuanhaikh viết 13:14 ngày 10/10/2018
Cảm ơn lời khuyên của bạn nhưng quả thật mình cũng làm lập trình lâu rồi, những cái khác mình có thể tự nghĩ ra rồi làm được. Còn cái này mình quả thật đang bí. Chưa biết đường đi như thế nào cả. Nếu quả thật mình không bí thì mình cũng chẳng làm phiền các bạn làm gì đâu. bạn thông cảm
Bài liên quan
0