PDA

View Full Version : Unicode trong SQL Server



ltuananh
06-04-2004, 08:12
Tôi sử dụng kiểu unicode dựng sẵn, và khi dùng SQL Query Analyzer với câu lệnh: insert into nguon (msNguon, Tennguon) values (6, 'Thử nghiệm'); thì bao giờ trong bảng nguon của tôi cũng như thế này:
msNguon Tennguon
6 Th? nghi?m
Bạn nào có thể cho tôi biết làm cách nào tôi có thể insert đúng từ thử nghiệm vào trong bảng nguồn không vậy

bpmtri
06-04-2004, 08:33
Bạn phải thêm chữ N đằng trước khi dùng chuỗi Unicode:
VD:


INSERT INTO NGUON (msNguon, Tennguon) VALUES (6, N'Thử nghiệm')

ltuananh
06-04-2004, 11:07
Cám ơn bạn bpmtri nhé, tôi đã làm được rồi, nhưng vì sao phải thêm chữ N vậy bạn?

bpmtri
06-04-2004, 13:01
SQL Server qui định như vậy mà, bạn phải dùng chữ N để báo cho nó biết là chuỗi Unicode, (bạn phải dùng chữ N này cho các kiểu như nchar, nvarchar, ntext)

ltuananh
06-04-2004, 14:21
À, thì ra là vậy, cám ơn bạn nhiều

ltuananh
07-04-2004, 07:29
Bạn bpmtri ơi, cho tôi hỏi tí nữa nhé:
Tôi có đoạn code như sau:
<%
KtTen =trim(request.form("tennguon"))
KtTen=Replace(KtTen,"'","''")
Dim Kiemtra
Set Kiemtra=Server.CreateObject("ADODB.Recordset")
Kiemtra.CursorLocation=3
Kiemtra.Open "Select Tennguon from Nguon Where Tennguon='" & KtTen & "'", Conn
if Kiemtra.RecordCount>0 then
kq=KtTen & " Đã tồn tại"
%>
Nhưng không hiểu vì sao, trong bảng tôi đã có tên nguồn là Thử nghiệm, vậy mà biến KtTen="Thử nghiệm" nhưng không hiểu sao câu lệnh If của tôi không thỏa mãn, tôi nghĩ chắc là sai trong câu lệnh SQL, nhưng không biết sửa như thế nào, bạn chỉ giúp tôi với.

bpmtri
07-04-2004, 08:52
Bạn nên dùng lệnh LIKE để so sánh chứ đừng dùng =



Kiemtra.Open "Select Tennguon from Nguon Where Tennguon LIKE N'" & KtTen & "'", Conn

ltuananh
07-04-2004, 09:05
Cám ơn bạn bpmtri nhiều lắm, tôi đã làm được rồi, hy vọng sẽ có nhiều dịp học hỏi bạn

past_beggar
07-04-2004, 12:47
Đồng chí bmtri kia cứ trả lời cho mem thôi, chẳng góp ý tí gì cả, làm past_beggar phải gõ bàn phím như thía này mệt quá

Này nhé, đừng có dại dột mà sử dụng rs.RecordCount mà kiểm tra sự tồn tại, nếu dùng cách này chịu khó MoveLast rồi MoveFirst mới chắc cú.

Kiểm tra rs.EOF and rs.BOF đảm bảo kết quả nhất.

Thân

White Rose
08-04-2004, 01:52
Đồng trí bmtri kia cứ trả lời cho mem thôi, chẳng góp ý tí gì cả, làm past_beggar phải gõ bàn phím như thía này mệt quá

Này nhé, đừng có dại dột mà sử dụng rs.RecordCount mà kiểm tra sự tồn tại, nếu dùng cách này chịu khó MoveLast rồi MoveFirst mới chắc cú.

Kiểm tra rs.EOF and rs.BOF đảm bảo kết quả nhất.

Thân
Thế cái dòng Kiemtra.CursorLocation=3 đồng chí nghĩ nó dùng để làm gì???

past_beggar
08-04-2004, 20:17
Thế cái dòng Kiemtra.CursorLocation=3 đồng chí nghĩ nó dùng để làm gì???
<===== Cứ test đi, không tranh luận làm gì cả. Có một số phát tôi dính chưởng roài, về sau chừa ;-)