Tôi muốn chèn văn bản với dấu nháy đơn Ví dụ john để bảng trong sql server 2005 cơ sở dữ liệuLàm thế nào để chèn văn bản với máy chủ sql đơn ngoặc kép 2005
Trả lời
INSERT INTO Table1 (Column1) VALUES ('John''s')
Hoặc bạn có thể sử dụng một thủ tục lưu trữ và truyền tham số như -
usp_Proc1 @Column1 = 'John''s'
Nếu bạn đang sử dụng truy vấn INSERT và không phải là thủ tục lưu trữ, bạn sẽ phải thoát khỏi báo giá với hai dấu ngoặc kép, nếu không thì sẽ không sao nếu bạn không thực hiện.
thoát quote duy nhất với thêm một single như Kirtan chỉ ra
Và nếu bạn đang cố gắng để thực hiện một sql động (mà không phải là một ý tưởng tốt ở nơi đầu tiên) thông qua sp_executesql sau đó mã dưới đây sẽ làm việc cho bạn
sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')'
Câu trả lời thực sự phụ thuộc vào cách bạn đang thực hiện INSERT
.
Nếu bạn đang xác định một SQL đen thì bạn cần phải sử dụng cách tiếp cận kép đánh dấu:
-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John''s')
-- Using a parameter, with a direct insert
DECLARE @Value varchar(50)
SET @Value = 'John''s'
INSERT INTO Table1 (Column1) VALUES (@Value)
-- Using a parameter, with dynamic SQL
DECLARE @Value varchar(50)
SET @Value = 'John''s'
EXEC sp_executesql 'INSERT INTO Table1 (Column1) VALUES (@p1)', '@p1 varchar(50)', @Value
Nếu bạn đang làm việc INSERT từ mã, các thông số sử dụng:
// Sample ADO.NET
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
using (SqlCommand command = conn.CreateCommand()) {
command.CommandText = "INSERT INTO Table1 (Column1) VALUES (@Value)";
command.Parameters.AddWithValue("@Value", "John's");
command.ExecuteNonQuery();
}
}
Nếu bạn dữ liệu chứa người dùng nhập, trực tiếp hoặc gián tiếp, CÁCH THAM SỐ SỬ DỤNG. Các tham số bảo vệ chống lại các cuộc tấn công SQL Injection. Không bao giờ xây dựng SQL động với đầu vào của người dùng.
cảm ơn bạn ... nhưng mã này sẽ không hoạt động cho querry cập nhật động –
Bạn có thể cung cấp thêm chi tiết về truy vấn của mình không? Các tham số sẽ hoạt động trong hầu hết các truy vấn. Tôi tò mò tại sao họ sẽ không làm việc trong trường hợp của bạn. – Brannon
này đã làm việc cho tôi:
INSERT INTO [TABLE]
VALUES ('text','''test.com''', 1)
Về cơ bản, bạn nên tận dụng dấu nháy đơn bạn muốn chèn và thay thế bằng hai. Vì vậy, nếu bạn muốn chèn một chuỗi văn bản ('văn bản') và thêm dấu nháy đơn xung quanh nó, nó sẽ là ('' 'văn bản' ''). Hi vọng điêu nay co ich.
Câu trả lời này hoạt động trong SQL Server 2005, 2008, 2012.
Đôi khi giá trị có MANY trích dẫn đơn. Thay vì thêm một trích dẫn duy nhất bên cạnh mỗi trích dẫn đơn như được mô tả ở trên với 'John''s'
. Và có các ví dụ sử dụng hàm REPLACE
để xử lý nhiều dấu nháy đơn trong một giá trị.
Hãy thử cách sau. Đây là một câu lệnh cập nhật nhưng bạn cũng có thể sử dụng nó trong câu lệnh INSERT
.
SET QUOTED_IDENTIFIER OFF
DECLARE @s VARCHAR(1000)
SET @s = "SiteId:'1'; Rvc:'6'; Chk:'1832'; TrEmp:'150'; WsId:'81'; TtlDue:'-9.40'; TtlDsc:'0'; TtlSvc:'0'; TtlTax:'-0.88'; TtlPay:'0'; TipAmt:'0.00'; SvcSeq:'09'; ReTx:'N'; TraceId:'160110124347N091832';"
UPDATE TransactionPaymentPrompt
set PromptData = @s
from TransactionPaymentPrompt tpp with (nolock)
where tpp.TransactionID = '106627343'
Bạn đã hỏi cách thoát khỏi Apostrophe character (')
trong SQL Server. Tất cả các câu trả lời trên làm một công việc tuyệt vời để giải thích điều đó.
Tuy nhiên, tùy thuộc vào tình huống, Right single quotation mark character (’)
có thể phù hợp.
(Không ký tự thoát cần thiết)
-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John’s')
• Apostrophe (U + 0027)
• Dấu ngoặc kép đơn phải (U + 2019)
nhưng thêm một trích dẫn đơn khác với câu hỏi hiện có sẽ tạo ra vấn đề trong khi lưu dữ liệu vào bảng khác ví dụ: chèn vào bảng1 (chọn * từ bảng 2) –