Selectați * din tabelul și încă efectua unele funcții pe o singură coloană numită

voturi
3

Aș vrea să fie în măsură să se întoarcă toate coloanele dintr-un tabel sau în tabelul de rezultate a unui alătura și încă să fie capabil să transforme o dată la un șir de caractere după nume.

De exemplu

Selectați ID-ul, DESCRIERE, TO_CHAR (CHANGE_DATE, 'AAAA-LL-ZZ HH24: MI: SS') AS FORMATED_DATE DIN MY_TABLE;

Acest lucru este bine și bună pentru doar aceste trei coloane. Dar, masa va avea de fapt, mai multe coloane și pot fi îmbinate pe alte tabele. Aș vrea să fie în măsură să utilizeze un wildcard pentru a obține toate coloanele și încă să fie capabil de a efectua transformarea TO_CHAR.

Ceva de genul: SELECT *, (CHANGE_DATE, 'AAAA-LL-ZZ HH24: MI: SS') AS FORMATED_DATE DIN MY_TABLE;

După cum v-ar fi ghicit din TO_CHAR, eu sunt, folosind un Oracle așa că folosind PLSQL.

Deci, întrebarea mea specifică este: Există o sintaxă care mi-ar permite să selecteze toate coloanele (prin *) și încă să fie capabil de a apela o funcție pe o singură coloană în cadrul acestor coloane.

Întrebat 12/03/2009 la 15:09
sursa de către utilizator
În alte limbi...                            


5 răspunsuri

voturi
0

În SQL Server ceea ce ai scris este perfect valabil, mi-ar presupune că ar trebui să funcționeze în Oracle, de asemenea. Doar să fie conștient vă va întoarce coloana dată de două ori o dată în forma sa orginal și o dată în forma formated.

FYI Utilizarea SELECT * trebuie evitate probally dar asta e pentru o altă întrebare :-)

Publicat 12/03/2009 la 15:15
sursa de către utilizator

voturi
4

Cel mai aproape ai putea face este ceva de genul:

SELECT 
     MY_TABLE.*, 
     (CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE 
FROM MY_TABLE;
Publicat 12/03/2009 la 15:16
sursa de către utilizator

voturi
1

Următoarele este acceptabil:

SELECT T1.*, T2.*, x + y as some_Z

sau poate

SELECT compute_foo() as aColumn, *

Ultimul dintre care va păstra întotdeauna coloanele speciale, în același loc - la început - indiferent de cât de multe coloane wildcard aduce.

Publicat 12/03/2009 la 15:17
sursa de către utilizator

voturi
0

FYI, dacă aveți se alătură, selectați * este în mod special să fie evitată, deoarece deșeuri de servere și resurse de rețea mai ales din moment ce toate se alăture domenii au aceleași informații. Junk de codificare cum ar fi „selectați *“ creează probleme de performanță care devin foarte dificil să se stabilească atunci când fiecare interogare din sistem este prost scris. Știu că în SQL Server, puteți glisa coloane din browserul obiect, nu ar fi surprins dacă oracol avea ceva similar.

În plus, selectați * poate crea multe, multe bug-uri mai târziu ca schimbarea tabelelor de date. Este o practică proastă nu pentru a denumi coloanele în ordinea specifică pe care le doriți.

Publicat 12/03/2009 la 17:18
sursa de către utilizator

voturi
2

Mai degrabă decât prelegere, aici. Oracle este un pic mai mult decât fussier MSSQL despre el, dar acest lucru a lucrat pentru mine.

SELECT GENERAL.GOREMAL. *, ROWNUM, current_date de la GENERAL.GOREMAL

Publicat 13/10/2012 la 23:52
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more