2009-04-22 7 views
35

मैं एकल उद्धरण के साथ पाठ सम्मिलित करना चाहते हैं सम्मिलित करने के लिए कैसे जैसे जॉन्स एसक्यूएल सर्वर में तालिका 2005 डेटाबेसएकल उद्धरण SQL सर्वर के साथ पाठ 2005

+0

लेकिन मौजूदा एक के साथ एक और एकल उद्धरण जोड़ने से डेटा को दूसरी तालिका में सहेजते समय समस्या पैदा होगी उदाहरण: तालिका 1 में डालें (तालिका 2 से * चुनें) –

उत्तर

7
INSERT INTO Table1 (Column1) VALUES ('John''s') 

या आप एक संग्रहीत प्रक्रिया का उपयोग करें और के रूप में पैरामीटर पारित कर सकते हैं -

usp_Proc1 @Column1 = 'John''s' 

आप एक सम्मिलित करें क्वेरी और नहीं एक संग्रहीत प्रक्रिया का उपयोग कर रहे हैं, तो आप यदि आप यह मत करो, दो उद्धरण के साथ बोली से बचने के लिए होगा किसी और इसके ठीक है।

+0

जब वैरिएबल – solairaja

+1

@ सोलेराजा से मूल्य आता है तो यह कैसे संभव हो सकता है - @somevar = 'test''s ' – Kirtan

23

एक अतिरिक्त सिंगल साथ एकल उद्धरण भागने के रूप में कीर्तन
और बताया तो नीचे दिए गए कोड आप

के लिए काम करेगा अगर आप एक गतिशील एसक्यूएल sp_executesql के माध्यम से (जो कि एक अच्छा पहली जगह में विचार नहीं है) निष्पादित करने के लिए कोशिश कर रहे हैं
sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')' 
19

उत्तर वास्तव में इस बात पर निर्भर करता है कि आप INSERT कैसे कर रहे हैं।

-- 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 

आप कोड से सम्मिलित कर रहे हैं, उपयोग पैरामीटर::

आप किसी SQL शाब्दिक निर्दिष्ट करते हैं, तो आप डबल-टिक दृष्टिकोण का उपयोग करने की जरूरत है

// 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(); 
    } 
} 

अपने डेटा में उपयोगकर्ता-इनपुट, प्रत्यक्ष या अप्रत्यक्ष, पैरामीटर उपयोग करते हैं। पैरामीटर एसक्यूएल इंजेक्शन हमलों के खिलाफ सुरक्षा करते हैं। कभी भी उपयोगकर्ता इनपुट के साथ गतिशील एसक्यूएल का निर्माण कभी नहीं।

+0

धन्यवाद ... लेकिन यह कोड गतिशील अद्यतन क्वेरी के लिए काम नहीं करेगा –

+4

क्या आप अपनी क्वेरी पर अधिक जानकारी दे सकते हैं? पैरामीटर लगभग सभी प्रश्नों में काम करेंगे। मैं उत्सुक हूं कि वे आपके मामले में क्यों काम नहीं करेंगे। – Brannon

16

यह मेरे लिए काम किया:

INSERT INTO [TABLE] 
    VALUES ('text','''test.com''', 1) 

मूल रूप से, आप एकल उद्धरण आप सम्मिलित और दो के साथ इसे बदलना चाहते ले। इसलिए यदि आप टेक्स्ट की एक स्ट्रिंग ('टेक्स्ट') डालना चाहते हैं और इसके चारों ओर सिंगल कोट्स जोड़ना चाहते हैं, तो यह होगा ('' टेक्स्ट '')। उम्मीद है की यह मदद करेगा।

1

इस उत्तर SQL सर्वर 2005, 2008 में काम करता है, 2012

कई बार मूल्य कई एकल उद्धरण है। 'John''s' के साथ ऊपर वर्णित प्रत्येक एकल उद्धरण के बगल में एक एकल उद्धरण जोड़ने के बजाय। और मूल्य में कई एकल उद्धरणों को संभालने के लिए REPLACE फ़ंक्शन का उपयोग कर उदाहरण हैं।

निम्नलिखित का प्रयास करें। यह एक अद्यतन कथन है लेकिन आप इसे 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' 
0

आपने पूछा कि SQL सर्वर में Apostrophe character (') से कैसे बचें। उपरोक्त सभी उत्तरों को समझाने का एक उत्कृष्ट काम है।

हालांकि, स्थिति के आधार पर, Right single quotation mark character (’) उपयुक्त हो सकता है।

(कोई भागने पात्रों की जरूरत)

-- Direct insert 
INSERT INTO Table1 (Column1) VALUES ('John’s') 

• एपॉस्ट्रॉफ़ि (यू + 0027)

Ascii Apostrophe on Wikipedia

• दायां एकल उद्धरण चिह्न (यू + 2019)

Unicode Right single quotation on Wikipedia