PDA

View Full Version : [Q] Hỏi về câu lệnh SQL



simon
25-06-2003, 10:08
Trong câu lệnh SQL ta biết dấu " ' " là để ngăn cách giữa dữ liệu và câu lệnh vậy xin hỏi làm thế nào để đưa dấu " ' " vào khi nhập dữ liệu vì em bị báo lỗi khi làm như vậy

DoanCongDanh
25-06-2003, 10:15
Ví dụ: bạn muốn tìm nhân viên Micheal'Bus?
Select * From Employees Where ID="Micheal'''Bus"
chú ý: bạn rào dấu ' bằng chính hai dấu '.

LMTruong
25-06-2003, 20:28
Trong cau lenh SQL khong du`ng dau " ma` du`ng dau nhay ' a'.Chuoi thi` duoc bo zo dau nhay '

DoanCongDanh
26-06-2003, 08:55
Không sao cả ' hay " vẫn được như thường.

White_Rose
26-06-2003, 15:22
Dùng hai dấu ' là một cách đơn giản mà rất tiện đấy.
Cách thứ 2 (cách tốt nhất theo lý thuyết) là sử dụng Parameters trong mô hình ADO (và ADO.NET. những cái khác không bít :D) để add thêm các parameter vào.

simon
27-06-2003, 21:15
cách của bạn mình không dùng được.
mình thử câu lệnh: st="George'''Bush"
Insert into ...... values(' & st & '); (có thêm mấy dấu " mà mình bỏ)
thì bị báo lỗi ngay (câu lệnh chạy đúng khi bỏ 3 dấu ' )

White_Rose
28-06-2003, 01:54
Để an toàn, bnạ làm như này đi:

sql = "Insert into ...... values('" & Replace(st,"'","''") & "');

phần in đậm là dấu nháy kép, những chỗ còn lại là nháy đơn.

NoZ
29-06-2003, 02:39
Cách mà bạn WhiteRose chỉ rất hay. Thay vì trực tiếp áp dụng 2 dấu nháy, bạn có thể nhờ hàm Replace của VB. Thêm một bước nữa, để tiện cho việc sử dung lần sau, bạn có thể viết một hàm như vầy

Private Function ChangeString (ByVal str as String) As String
ChangeString = " ' " & Replace(str, " ' "," '' ") & " ' "
End Function

Sử dụng như vậy bạn cũng đỡ phải mất công gõ thêm các dấu nháy đơn trước và sau một giá trị string trong câu lệnh SQL. Ví dụ gọi hàm này như sau

Dim st As String
Dim Sql As String

'dùng một dấu nháy thôi
st="George'Bush"
Sql = "Insert into TABLE(NAME) Values(ChangeString(st))"

'ví dụ khác, bạn sẽ thấy rõ hơn lợi ích của hàm ChangeString

Sql = "Select * from TABLE Where Name=" & ChangeString(st)