التنصيص في أوراكل عمود الأسماء المستعارة

StackOverflow https://stackoverflow.com/questions/56591

  •  09-06-2019
  •  | 
  •  

سؤال

حسنا, هذا هو الشيء غامض السؤال ، لكن آمل شخص يمكن أن تساعد لي مع ذلك.

النظام أنا أعمل على بناء ديناميكية سلسلة SQL التنفيذ داخل الإجراء المخزن, و جزء من هذه الدينامية SQL تحديد عمود الأسماء المستعارة ، والتي هي نفسها في الواقع قيم استردادها من جدول آخر من المستخدم إنشاء البيانات.

لذا, فعلى سبيل المثال, السلسلة قد تبدو شيء من هذا القبيل ؛

SELECT table1.Col1 AS "This is an alias" FROM table1

هذا يعمل بشكل جيد.ومع ذلك ، فإن القيمة التي يستخدم الاسم المستعار يمكن أن تحتوي على اقتباس مزدوجة الحرف الذي يكسر الخارجي الاقتباس.ظننت أن بإمكاني الهروب من علامات الاقتباس المزدوجة داخل مستعار بطريقة ما ، لكن لم يكن لدي الحظ في معرفة كيفية القيام بذلك.مائل لا يعمل ، باستخدام اثنين من علامات الاقتباس المزدوجة في صف النتائج في هذا الخطأ ؛

SQL Error: ORA-03001: unimplemented feature
03001. 00000 -  "unimplemented feature"
*Cause:    This feature is not implemented.

وقد أي شخص لديه أي خبرة مع هذه المسألة من قبل ؟ هتافات أي فكرة أي شخص لديه.

p.s.ونقلت اللازمة حول الأسماء المستعارة لأنها يمكن أن تحتوي على مسافات.

هل كانت مفيدة؟

المحلول

يمكنك فقط وضع شخصية أخرى بدلا من علامات الاقتباس المزدوجة والاستعاضة عن ذلك مع التنصيص في القانون ؟

شيء من هذا القبيل:

SELECT table1.Col1 AS "This is |not| an alias" FROM table1

ثم استبدال فقط | مع ".

وأنا أعلم أنه هو الإختراق, ولكن لا أستطيع التفكير في أي حل أفضل...و ماذا كنت تفعل هناك هاك على أي حال."لطيفة" لا يمكن تحديد قيم العمود أسماء على حدة وربطها في التعليمات البرمجية الخاصة بك.هذا من شأنه أن يجعل الأمور أكثر نظافة.

نصائح أخرى

استخدام أوراكل اقتباس المشغل:

select q'#someone's quote#' from dual;

إن '#' يمكن الاستعاضة عن أي حرف

عند تشغيل هذا:

select 'test"columnname"' from dual

أوراكل يعود هذا (لاحظ أوراكل-إنشاء عمود اسم):

'TESTCOLUMNNAME'
--------------------------------
test"columnname

حقيقة أن أوراكل اسم العمود لا تشمل بلدي مزدوجة-اقتباس يقول لي أن أوراكل ربما لا يمكن أن تمثل ذلك.

أفضل رهان بقدر ما أستطيع أن أرى أن الشريط مزدوجة-مقتطفات من البيانات الخاصة بك قبل استخدام أسماء الأعمدة.ومن المحزن أن ذلك سوف يتطلب أيضا أن تفعل نفس تصفية عند حدد هذه الأعمدة, ولكن أنا لا أرى طريقة أخرى.

ربما مثمرة مجال التحقيق أن ننظر إلى طريقة التسعير.

بلدي $quotedString = $dbh->إقتباس( $string );

حاول هذا واحد اثنين ونقلت تبدو فعلا مثل أحد اقتباس مزدوجة في الإخراج:
select 1 as "University ''John Smith''" from dual;

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top