سؤال

أنا باستخدام Oracle SQL (في SQLDeveloper, لذلك أنا لم يكن لديك الوصول إلى SQLPLUS الأوامر مثل عمود) إلى تنفيذ استعلام التي تبدو شيئا مثل هذا:

select assigner_staff_id as staff_id, active_flag, assign_date,
  complete_date, mod_date
from work where assigner_staff_id = '2096';

نتائج تعطيني ننظر بشيء من هذا القبيل:

STAFF_ID               ACTIVE_FLAG ASSIGN_DATE               COMPLETE_DATE             MOD_DATE                  
---------------------- ----------- ------------------------- ------------------------- ------------------------- 
2096                   F           25-SEP-08                 27-SEP-08                 27-SEP-08 02.27.30.642959000 PM 
2096                   F           25-SEP-08                 25-SEP-08                 25-SEP-08 01.41.02.517321000 AM 

2 rows selected

هذا يمكن بسهولة جدا تنتج مجموعة واسعة جدا وغير عملي النصية التقرير عندما أحاول لصق النتائج في صورة تنسيق جيد سريعة-n-القذرة كتلة النص في رسالة بريد إلكتروني أو الإبلاغ عن مشكلة ، إلخ.ما هي أفضل طريقة للتخلص من جميع ثا مساحة بيضاء إضافية في الناتج الأعمدة عندما أنا فقط باستخدام الفانيليا عادي Oracle SQL ؟ حتى الآن كل ما عندي من عمليات البحث على شبكة الإنترنت لم التفت كثيرا ، ويب نتائج البحث تبين لي كيفية القيام بذلك باستخدام تنسيق الأوامر مثل العمود في SQLPLUS (الذي لا يكون).

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

المحلول

ماذا تستخدم للحصول على النتائج ؟ الإخراج قمت بلصقه يبدو انها قادمة من SQL*PLUS.قد يكون ذلك مهما أداة كنت تستخدم لتوليد نتائج بعض طريقة تغيير الإخراج.

بشكل افتراضي أوراكل النواتج الأعمدة بناء على عرض العنوان أو عرض بيانات العمود الذي هو أوسع من أي وقت مضى.

إذا كنت تريد جعل الأعمدة الصغيرة سوف تحتاج إلى إما إعادة تسمية لهم أو تحويلها إلى نص واستخدام substr() لجعل الافتراضات أصغر.

select substr(assigner_staff_id, 8) as staff_id, 
      active_flag as Flag, 
      to_char(assign_date, 'DD/MM/YY'),
      to_char(complete_date, 'DD/MM/YY'), 
      mod_date
from work where assigner_staff_id = '2096';

نصائح أخرى

في البيان الخاص بك ، يمكنك تحديد نوع الإخراج كنت تبحث عن:

select /*csv*/ col1, col2 from table;
select /*Delimited*/ col1, col2 from table;

وهناك صيغ أخرى متاحة مثل xml, html, text, محمل, الخ.

يمكنك تغيير تنسيق هذه الخيارات ضمن أدوات > تفضيلات > قاعدة البيانات > الأدوات > تصدير

تأكد من اختيار تشغيل البرنامج النصي بدلا من تشغيل البيان.

* هذا هو Oracle SQL Developer v3.2

ما يمكنك القيام به مع sql محدودة من الأداة الخاصة بك.SQL Plus الأوامر إلى تنسيق الأعمدة ولكنها ليست سهلة الاستخدام.

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

سؤال جميل.أنا حقا لم أفكر في ذلك.

شيء واحد يمكنك القيام به هو تغيير SQL الخاصة بك بحيث ترجع فقط أضيق صالحة للاستعمال الأعمدة.

على سبيل المثال(أنا لا حار جدا على أوراكل الجملة ، ولكن شيئا من هذا القبيل ينبغي أن العمل):

select substring( convert(varchar(4), assigner_staff_id), 1, 4 ) as id, 
       active_flag as act, -- use shorter column name

       -- etc. 

from work where assigner_staff_id = '2096';

هل هذا منطقي ؟
إذا كنت تفعل هذا على يونكس/لينكس ، أود أن أقترح تشغيله من سطر الأوامر والأنابيب من خلال awk النصي.

إذا كنت أفتقد-المفهوم ، ثم الرجاء تحديث سؤالك سوف يكون الذهاب أخرى :)

إذا لم يكن لديك الكثير من الصفوف عاد أنا غالبا ما تستخدم توم Kytes print_table وظيفة.

SQL> set serveroutput on 
SQL> execute print_table('select * from all_objects where rownum < 3');
OWNER                         : SYS
OBJECT_NAME                   : /1005bd30_LnkdConstant
SUBOBJECT_NAME                :
OBJECT_ID                     : 27574
DATA_OBJECT_ID                :
OBJECT_TYPE                   : JAVA CLASS
CREATED                       : 22-may-2008 11:41:13
LAST_DDL_TIME                 : 22-may-2008 11:41:13
TIMESTAMP                     : 2008-05-22:11:41:13
STATUS                        : VALID
TEMPORARY                     : N
GENERATED                     : N
SECONDARY                     : N
-----------------
OWNER                         : SYS
OBJECT_NAME                   : /10076b23_OraCustomDatumClosur
SUBOBJECT_NAME                :
OBJECT_ID                     : 22390
DATA_OBJECT_ID                :
OBJECT_TYPE                   : JAVA CLASS
CREATED                       : 22-may-2008 11:38:34
LAST_DDL_TIME                 : 22-may-2008 11:38:34
TIMESTAMP                     : 2008-05-22:11:38:34
STATUS                        : VALID
TEMPORARY                     : N
GENERATED                     : N
SECONDARY                     : N
-----------------

PL/SQL procedure successfully completed.

SQL> 

إذا كان الكثير من الصفوف سأقوم الاستعلام في SQL المطور و حفظ باسم xls ، businessy أنواع الحب excel لسبب ما.

لماذا لا مجرد استخدام "الزهر" وظيفة ؟

select 
(cast(assigner_staff_id as VARCHAR2(4)) AS STAFF_ID,
(cast(active_flag as VARCHAR2(1))) AS A,
(cast(assign_date as VARCHAR2(10))) AS ASSIGN_DATE,
(cast(COMPLETE_date as VARCHAR2(10))) AS COMPLETE_DATE,
(cast(mod_date as VARCHAR2(10))) AS MOD_DATE
from work where assigner_staff_id = '2096';
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top