उनके बाद की अवधि का उपयोग करने का प्रयास करते समय स्क्प्लस वेरिएबल्स मजाकिया क्यों काम करते हैं?

SQL> set define on
SQL> accept goo char prompt 'goo: ';
goo: mygoo
SQL> select '&goo' from dual;
old   1: select '&goo' from dual
new   1: select 'mygoo' from dual

MYGO
-----
mygoo

SQL> select '&goo something' from dual;
old   1: select '&goo something' from dual
new   1: select 'mygoo something' from dual

MYGOOSOMETHING
---------------
mygoo something

SQL> select '&goo.something' from dual;
old   1: select '&goo.something' from dual
new   1: select 'mygoosomething' from dual

MYGOOSOMETHIN
--------------
mygoosomething

SQL> select '&goo..something' from dual;
old   1: select '&goo..something' from dual
new   1: select 'mygoo.something' from dual

MYGOO.SOMETHIN
---------------
mygoo.something

मुझे पीरियड्स पर डबल अप क्यों करना है? क्या कोई बेहतर तरीका है?

0
rocketboy2000 7 सितंबर 2019, 00:25

1 उत्तर

सबसे बढ़िया उत्तर

यह बिल्कुल भी मजाकिया नहीं है, लेकिन अपेक्षित डिफ़ॉल्ट व्यवहार है।

SET CONCAT वर्ण एक अवधि है (जब तक कि आप इसे किसी अन्य वर्ण पर सेट नहीं करते)। यदि आप प्रतिस्थापन चर के ठीक बाद की अवधि जोड़ना चाहते हैं, तो आपको लगातार दो अवधियों का उपयोग करना होगा।

यदि आप कॉनकैट कैरेक्टर सेट करते हैं उदा। #, फिर अवधि सामान्य रूप से काम करती है:

SQL> set concat '#'
SQL> select '&goo.' from dual;
old   1: select '&goo.' from dual
new   1: select 'mygoo.' from dual

'MYGOO
------
mygoo.

यदि आप इसे किसी अवधि में वापस सेट करते हैं, तो यह फिर से मजाकिया कार्य करता है:

SQL> set concat '.'
SQL> select '&goo.' from dual;
old   1: select '&goo.' from dual
new   1: select 'mygoo' from dual

'MYGO
-----
mygoo

SQL> select '&goo..' from dual;
old   1: select '&goo..' from dual
new   1: select 'mygoo.' from dual

'MYGOO
------
mygoo.

अंत में, # पर वापस जाएं, जो मजाकिया भी काम करता है और आपको उनमें से दो का उपयोग करना होगा:

SQL> set concat '#'
SQL> select '&goo#' from dual;
old   1: select '&goo#' from dual
new   1: select 'mygoo' from dual

'MYGO
-----
mygoo

SQL> select '&goo##' from dual;
old   1: select '&goo##' from dual
new   1: select 'mygoo#' from dual

'MYGOO
------
mygoo#

SQL>
1
Littlefoot 6 सितंबर 2019, 21:41