2010-11-14 13 views
38

मैं अपने सम्मिलन कथन में विशेष वर्ण & डालना चाहता हूं। मेरे डालने है:ओरेकल डेटाबेस में "&" जैसे विशेष वर्ण कैसे दर्ज करें?

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); 

अगर मैं इस क्वेरी मैं एक पॉपअप हो रही है चलाने के लिए कोशिश करते हैं और यह Oracle_14 के लिए मान दर्ज करने के लिए मुझे पूछता है।

मैं ओरेकल डीबी के सम्मिलित कथन में & जैसे विशेष वर्ण कैसे दर्ज कर सकता हूं?

+0

आप किस उपकरण को सम्मिलित करने के लिए उपयोग कर रहे हैं? – SimonJ

+0

मैं SQL डेवलपर का उपयोग कर रहा हूं। – Rachel

उत्तर

49

आप एसक्यूएल * प्लस या SQL डेवलपर में हैं, तो आप SQL विवरण निष्पादित करने से पहले

SQL> set define off; 

चलाना चाहते हैं। यह प्रतिस्थापन चर के लिए जांच की बारी है।

इस तरह के एसईटी निर्देश क्लाइंट टूल (एसक्यूएल * प्लस या एसक्यूएल डेवलपर) के लिए निर्देश हैं। उनके पास सत्र का दायरा है, इसलिए जब भी आप कनेक्ट करते हैं तो आपको निर्देश जारी करना होगा (यदि आप डिफॉल्ट सेट को बंद करने के लिए डिफ़ॉल्ट बदलना चाहते हैं तो आप अपने क्लाइंट मशीन के glogin.sql में निर्देश डाल सकते हैं)। डेटाबेस में किसी अन्य उपयोगकर्ता या सत्र को प्रभावित करने का कोई जोखिम नहीं है।

+9

17 सेकंड ... मैं * इतना * बंद –

+0

था, तो क्या यह केवल मेरे एसक्यूएल के लिए या पूर्ण तालिका या पूर्ण डेटाबेस के लिए डिफिनेशन बंद कर देगा, क्या मेरे पास उत्पादन सम्मिलित स्क्रिप्ट में ऐसा कुछ भी हो सकता है? – Rachel

+0

आईएमओ, आपका उत्पादन कोड * प्रतिस्थापन का उपयोग करना चाहिए, या कम से कम, इसे स्वयं संभालना चाहिए। मेरा मानना ​​है कि कोड आपके लॉगिन सत्र की सेटिंग करता है, हालांकि। –

17

'Java_22 '||'&'||' Oracle_14'

+0

यह समाधान अच्छी तरह से काम करता है। – Rachel

-3

आप बैकस्लैश चरित्र का उपयोग कर सकते या तो एक चरित्र या प्रतीक

'Java_22 \ & Oracle_14'

से बचने के लिए प्रयास करें या वर्णों की स्ट्रिंग से बचने के लिए धनुकोष्ठक या प्रतीकों

'{जावा a_22 & Oracle_14} '

+0

आपका पहला दृष्टिकोण काम नहीं करता है। – Rachel

+0

यह दूसरे दृष्टिकोण के लिए ब्रैकेट प्रिंट करता है और पहले दृष्टिकोण के लिए '\ &' प्रिंट करता है। – Rachel

+2

बेनामी उपयोगकर्ता कहता है: * टिप्पणी: मूल रूप से ओरेकल दस्तावेज़ीकरण में निर्देशित किया गया है लेकिन क्लाइंट में एसक्यूएल डेवलपर जैसे काम नहीं कर रहा है। * – Pubby

9

जस्टिन जवाब जाने का रास्ता है, लेकिन यह भी रूप में एक FYI करें आप चरित्र आप सम्मिलित करना चाहते का ascii मूल्य के साथ Chr() फ़ंक्शन का उपयोग कर सकते हैं। इस उदाहरण के लिए यह होगा:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 
0

हम उदाहरण के लिए के रूप में अच्छी एक और तरीका है का उपयोग कर सकते db हम निम्न स्वरूप का उपयोग कर सकते हैं में विशेष वर्ण 'Java_22 & Oracle_14' के साथ मूल्य डालने के लिए ..

'जावा_22' || ' & '||' Oracle_14 '

हालांकि यह 3 अलग टोकन के रूप में विचार करता है, लेकिन हमारे पास कोई विकल्प नहीं है क्योंकि ऑरैक दस्तावेज़ में प्रदान किए गए बचने के अनुक्रम का प्रबंधन गलत है।

+1

थैट्स ने अनंतकाल को क्या कहा, और क्रेग ने क्या कहा, जब सवाल पहले पूछा गया था। –

0

तो एक एस्केप वर्ण शुरुआत या "JAVA" की तरह अंत में जोड़े जाने के लिए है, तो का उपयोग करें:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'JAVA'||chr(34)||''); 
1

मूल्यों जो '&' उस में मिला है सम्मिलित करें। Folloiwng कोड का प्रयोग करें।

Set define off; 

Begin 

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); 

End ; 

और ओरेकल या टॉड संपादकों से F5 दबाएं।

0

विशेष चरित्र सेट के लिए, आपको यूनिकोड चार्ट की जांच करने की आवश्यकता है। बाद अपने चरित्र का चयन करें, आप नीचे दिए गए एसक्यूएल बयान का उपयोग कर सकते

SELECT COMPOSE('do' || UNISTR('\0304' || 'TTTT')) FROM dual; 

-

हे TTTT

0

इसके अलावा, आप इस तरह concat उपयोग कर सकते हैं: डी

Insert into Table Value(CONCAT('JAVA ',CONCAT('& ', 'Oracle')); 
-1

मेरे मामले में मुझे 'मदद के लिए * 001 डायल करें' टेक्स्ट के साथ एक पंक्ति डालने की आवश्यकता है। इस मामले में विशेष चरित्र एक तारांकन है।

sqlplus यह त्रुटि के साथ विफल का उपयोग कर प्रत्यक्ष डालने का उपयोग करके "SP2-0734: अज्ञात आदेश शुरुआत ..."

मैं सफलता के बिना भागने सेट tryed।

प्राप्त करने के लिए, मैं

insert into testtable (testtext) value ('Please dial *001 for help'); 
फिर sqlplus से

साथ फाइल सिस्टम पर एक फ़ाइल insert.sql बनाया मैं

@insert.sql 

मार डाला और पंक्ति सम्मिलित किया गया था।

0

वहाँ ऐसा करने के लिए 3 तरीके हैं:

1) आप सेट से परिभाषित करते हैं; और उसके बाद सम्मिलित करें stmt निष्पादित करें।

2) बस एकल उद्धरण के भीतर आरक्षित शब्द को जोड़कर और इसे संयोजित करके। ईजी। 'जावा_22' का चयन करें || '&' || ':' || दोहरी से 'Oracle_14' - (:) एक वैकल्पिक है।

3) सहसंबंध के साथ सीएचआर फ़ंक्शन का उपयोग करके। ईजी। 'जावा_22' का चयन करें || chr (38) || ' Oracle_14 'दोहरी

इस सहायता की आशा है !!!

1

आप बस एक डॉट का पालन कर & से बच सकते हैं। इसे आजमाएं:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 &. Oracle_14'); 
संबंधित मुद्दे