Cú pháp SQL chính xác để chèn một giá trị với dấu nháy đơn trong đó là gì?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Tôi tiếp tục nhận được một lỗi vì tôi nghĩ dấu nháy đơn sau chữ O là thẻ kết thúc cho giá trị.
Cú pháp SQL chính xác để chèn một giá trị với dấu nháy đơn trong đó là gì?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Tôi tiếp tục nhận được một lỗi vì tôi nghĩ dấu nháy đơn sau chữ O là thẻ kết thúc cho giá trị.
Câu trả lời:
Thoát dấu nháy đơn (nghĩa là nhân đôi ký tự trích dẫn) trong SQL của bạn:
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
Điều tương tự cũng áp dụng cho các truy vấn CHỌN:
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
Dấu nháy đơn, hoặc trích dẫn đơn, là một ký tự đặc biệt trong SQL chỉ định phần đầu và phần cuối của dữ liệu chuỗi. Điều này có nghĩa là để sử dụng nó như một phần của dữ liệu chuỗi ký tự của bạn, bạn cần escape
ký tự đặc biệt. Với một trích dẫn, điều này thường được thực hiện bằng cách nhân đôi trích dẫn của bạn. (Hai ký tự trích dẫn đơn, không phải trích dẫn kép thay vì một trích dẫn.)
Lưu ý : Bạn chỉ nên lo lắng về vấn đề này khi bạn chỉnh sửa dữ liệu theo cách thủ công thông qua giao diện SQL thô vì việc viết các truy vấn bên ngoài quá trình phát triển và thử nghiệm sẽ rất hiếm khi xảy ra. Trong mã có các kỹ thuật và khung (tùy thuộc vào ngăn xếp của bạn) đảm nhiệm việc thoát các ký tự đặc biệt, SQL SQL , v.v.
Bạn chỉ cần tăng gấp đôi trên các dấu ngoặc đơn ...
insert into Person (First, Last)
values ('Joe', 'O''Brien')
Bởi vì một trích dẫn được sử dụng để chỉ sự bắt đầu và kết thúc của một chuỗi; bạn cần phải thoát khỏi nó
Câu trả lời ngắn gọn là sử dụng hai dấu ngoặc đơn - ''
- để cơ sở dữ liệu SQL lưu trữ giá trị dưới dạng '
.
Nhìn vào việc sử dụng REPLACE để vệ sinh các giá trị đến:
Bạn muốn kiểm tra ''''
và thay thế chúng nếu chúng tồn tại trong chuỗi ''''''
để thoát khỏi trích dẫn đơn lẻ.
eduffy đã có một ý tưởng tốt . Anh ta chỉ nhận được nó ngược trong ví dụ mã của mình. Trong JavaScript hoặc SQLite, bạn có thể thay thế dấu nháy đơn bằng ký hiệu dấu.
Anh ấy (vô tình tôi chắc chắn) đã đặt biểu tượng dấu làm dấu phân cách cho chuỗi thay vì thay thế dấu nháy đơn trong O'Brian. Đây thực sự là một giải pháp cực kỳ đơn giản cho hầu hết các trường hợp.
Ký tự dấu nháy đơn có thể được chèn bằng cách gọi hàm CHAR với giá trị tra cứu bảng ASCII của dấu nháy đơn , 39. Các giá trị chuỗi sau đó có thể được nối với nhau bằng toán tử ghép .
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
Dấu ngoặc đơn được thoát bằng cách nhân đôi chúng lên ,
SQL sau đây minh họa chức năng này.
declare @person TABLE (
[First] nvarchar(200),
[Last] nvarchar(200)
)
insert into @person
(First, Last)
values
('Joe', 'O''Brien')
select * from @person
First | Last
===================
Joe | O'Brien
sử dụng dấu ngoặc kép xung quanh các giá trị.
insert into Person (First, Last) Values("Joe","O'Brien")
He said, "Don't!"
sử dụng dấu ngoặc đơn và / hoặc dấu ngoặc kép - có thể được thực hiện: 'He said, "Don''t!"'
hoặc "He said, ""Don't!"""
. Khi thêm câu trả lời mới cho câu hỏi đã có từ lâu với câu trả lời được chấp nhận, bạn phải cung cấp thông tin mới, đầy đủ. Sử dụng dấu ngoặc kép là mới - nhưng giới hạn trong một vài DBMS; bạn nên chịu khó xác định ít nhất một trong số những người chấp nhận chúng.
Thay vào đó, sử dụng backtick (trên phím ~);
`O'Brien`