Oracle SQL एस्केप चरित्र ('और' के लिए)


86

ओरेकल एसक्यूएल डेवलपर का उपयोग करके एसक्यूएल डालने के बयानों को निष्पादित करने का प्रयास करते समय मैं "एंटर प्रतिस्थापन मूल्य" प्रॉम्प्ट उत्पन्न करता रहता हूं:

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

मैंने ऊपर दिए गए '\' का उपयोग करके क्वेरी में विशेष चरित्र से बचने की कोशिश की है, लेकिन मैं अभी भी एम्परसेंड से नहीं बच सकता, 'और', जिससे स्ट्रिंग प्रतिस्थापन होता है।

जवाबों:


124

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

सेट ऑफ सेट करें

फिर आपको भागने या सीएचआर (38) के बारे में चिंता करने की आवश्यकता नहीं होगी।


59

|| chr(38) ||

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


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

मेरे लिए सेट से दूर काम नहीं किया। आपके समाधान ने काम किया। धन्यवाद ...
अशोक कुमार

31

परिभाषित चरित्र को कुछ और के अलावा सेट करें

सेट ~
तालिका blah (x varchar (20)) बनाएं;
blah (x) मान ('blah & amp') में डालें;
चयन करें * ब्ला से;

एक्स                    
-------------------- 
blah & amp 


27
या सेट
ऑफ़िन

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

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

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


4

select 'one'||'&'||'two' from dual


एम्परसेंड को केवल स्ट्रिंग के अंत में होना चाहिए, जिससे आधे भाग को बचाया जा सके। select 'one&' || 'two' from dual
ड्यूरेट

1

असली जवाब आपको भागने के चरित्र को '\ _' पर सेट करने की आवश्यकता है: सेट करें चालू करें

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


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


4
मैं टॉक टॉम ( Asktom.oracle.com/pls/asktom/… ) पर पढ़ा कि "सेट ESCAPE एक sqplus'ism है"। तो यह केवल वास्तविक उत्तर होगा यदि प्रश्न SQL * प्लस के बारे में था।
कार्ल कीनिंगर

-1

अपने अनुरोध से पहले इसे जोड़ें

set define off;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.