2009-07-16 10 views
68

Oracle SQL Developer मैं पैदा रखना एक "प्रतिस्थापन मान दर्ज करें" संकेत का उपयोग कर एसक्यूएल डालने स्टेटमेंट्स को निष्पादित करने का प्रयास करते समय:Oracle SQL भागने चरित्र (एक के लिए 'और')

insert into agregadores_agregadores 
(
idagregador, 
nombre, 
url 
) 
values 
(
2, 
'Netvibes', 
'http://www.netvibes.com/subscribe.php?type=rss\&url=' 
); 

मैं escaping the special character in the query का उपयोग कर की कोशिश की है '\ 'ऊपर लेकिन मैं अभी भी एम्पर्सेंड से नहीं बच सकता,' & ', एक स्ट्रिंग प्रतिस्थापन का कारण बनता है।

, आगे बदमाशों जाओ बनाना मेरा दिन :)

उत्तर

101

& परिभाषा के लिए डिफ़ॉल्ट मान है, जो आप का उपयोग करने की अनुमति देता है प्रतिस्थापन चर। मैं का उपयोग कर

सेट इसे बंद करना चाहते रवाना परिभाषा

तो आप से बचने या CHR (38) के बारे में चिंता करने की ज़रूरत नहीं होगी।

14
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL) 
values (2,'Netvibes', 
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url='); 
+0

जेफरी केम्प के साथ समाधान प्रदान करने के लिए धन्यवाद || सीआर (38) || –

+0

यह एक बेहतर सामान्य समाधान है जो उपयोगकर्ता प्रावधानों से स्वतंत्र है (यानी जब उपयोगकर्ताओं को सेट ऑफ़ डिफाईन की अनुमति नहीं है) और जब उपयोगकर्ता समान SQL कमांड में पाठ और परिभाषित चर दोनों में एम्पर्सेंड निर्दिष्ट करना चाहते हैं। – fuzzyanalysis

28

अलावा कुछ करने के लिए परिभाषित चरित्र सेट की तुलना में &

 
SET DEFINE ~ 
create table blah (x varchar(20)); 
insert into blah (x) values ('blah&amp'); 
select * from blah; 

X      
-------------------- 
blah&amp 

+26

या सेट डिफाई ऑफ – dpbradley

49

|| chr(38) ||

यह समाधान एकदम सही है।

+2

यह काम पूरा हो जाता है, लेकिन पूर्व-मौजूदा तारों से निपटने के दौरान थोड़ा सा गुंजाइश है। – aglassman

+0

सही – EoinS

1

असली जवाब आप एस्केप वर्ण के लिए निर्धारित करने की आवश्यकता है '\': सेट ESCAPE पर

समस्या हुई हो सकती है या तो बच क्योंकि बचाव या विकलांग हो गया था, चरित्र '\' के अलावा किसी अन्य चीज़ पर सेट किया गया था। उपर्युक्त कथन और से बचने में सक्षम होगा, इसे '\' पर सेट करें।


पहले पोस्ट किए गए अन्य उत्तरों में से कोई भी वास्तव में मूल प्रश्न का उत्तर नहीं देता है। वे सभी समस्या के आसपास काम करते हैं लेकिन इसे हल नहीं करते हैं।

+4

से दूर मैंने पूछे टॉम (https://asktom.oracle.com/pls/asktom/f?p=100:11TP::::1111QUESTION_ID:1629001802771) पर पढ़ा है कि "सेट एस्केप एक वर्ग है ' वाद "। तो यह सवाल केवल वास्तविक जवाब होगा यदि प्रश्न एसक्यूएल * प्लस के बारे में था। –

संबंधित मुद्दे