PDA

View Full Version : [MySQL] Fare uppercase prima lettera della stringa: tutto questo?


Matrixbob
06-12-2010, 19:22
SELECT descrizione,
CONCAT(UPPER(LEFT(descrizione, 1)), LOWER(RIGHT(descrizione, LENGHT(descrizione)-1)))
AS new_lable FROM articolo


Tutta sta roba? In PHP c'è la funzione che fa l'upper della prima lettera...

dojolab
06-12-2010, 19:32
SELECT descrizione,
CONCAT(UPPER(LEFT(descrizione, 1)), LOWER(RIGHT(descrizione, LENGHT(descrizione)-1)))
AS new_lable FROM articolo


Tutta sta roba? In PHP c'è la funzione che fa l'upper della prima lettera...

La ucfirst?
PHP è un linguaggio di programmazione, SQL è uno standard.

Comunque basta che ti crei una funzione SQL:

CREATE FUNCTION ucfirst(x varchar(255)) returns varchar(255)
return concat( upper(substring(x,1,1)),lower(substring(x,2)) );

E la richiami come vuoi ;)

ucfirst('ciao mamma')

Matrixbob
06-12-2010, 19:35
La ucfirst?
PHP è un linguaggio di programmazione, SQL è uno standard.

Comunque basta che ti crei una funzione SQL:

CREATE FUNCTION ucfirst(x varchar(255)) returns varchar(255)
return concat( upper(substring(x,1,1)),lower(substring(x,2)) );

E la richiami come vuoi ;)

ucfirst('ciao mamma')

SQL IMHO è un linguaggio di programmazione dichiarativo ... e MySQL ha delle funzioni sue, potevano copiare PHP.

dojolab
06-12-2010, 19:42
SQL IMHO è un linguaggio di programmazione dichiarativo ... e MySQL ha delle funzioni sue, potevano copiare PHP.

SQL è un linguaggio testuale interattivo per l'interrogazione e gestione dei DBMS ed incorpora sia il DDL che il DML.

MySQL è un DBMS e adotta SQL come linguaggio DDL e DML.
Potevano fare una UCFirst; ma creartela te che ti cambia? Niente.

Supdario
06-12-2010, 19:44
Più correttamente SQL è un linguaggio di interrogazione, al massimo si può dire che MySQL è un linguaggio dichiarativo (anche se i linguaggi SQL sono identici fra loro, ci sono solo alcune minime differenze)

In ogni caso quella funzione non è stata messa perché non aveva senso inserirla per gli scopi di un database. L'SQL non serve ad eseguire calcoli aritmetici o processare stringhe, ma serve a leggere, scrivere e gestire gruppi di dati.

dojolab
06-12-2010, 20:08
In ogni caso quella funzione non è stata messa perché non aveva senso inserirla per gli scopi di un database. L'SQL non serve ad eseguire calcoli aritmetici o processare stringhe, ma serve a leggere, scrivere e gestire gruppi di dati.

Niente da aggiungere.
:)

Matrixbob
06-12-2010, 20:18
Più correttamente SQL è un linguaggio di interrogazione, al massimo si può dire che MySQL è un linguaggio dichiarativo (anche se i linguaggi SQL sono identici fra loro, ci sono solo alcune minime differenze)

In ogni caso quella funzione non è stata messa perché non aveva senso inserirla per gli scopi di un database. L'SQL non serve ad eseguire calcoli aritmetici o processare stringhe, ma serve a leggere, scrivere e gestire gruppi di dati.

e com'è che fa pure le operazioni? :)
fai 30 fai 31, va beh poco male, era solo per curiosità. :)

Matrixbob
06-12-2010, 20:22
PS]
Voi di norma se ci sono funzioni sovrapposte tra il linguaggio server side e il DBMS a chi la fate fare?
Io al DBMS.

dojolab
06-12-2010, 20:57
PS]
Voi di norma se ci sono funzioni sovrapposte tra il linguaggio server side e il DBMS a chi la fate fare?
Io al DBMS.

Dipende; sinceramente io preferisco far fare tutto al DBMS.

cdimauro
07-12-2010, 12:53
SQL IMHO è un linguaggio di programmazione dichiarativo ... e MySQL ha delle funzioni sue, potevano copiare PHP.
e com'è che fa pure le operazioni? :)
fai 30 fai 31, va beh poco male, era solo per curiosità. :)
Gli scopi sono nettamente diversi. Gli engine SQL devono estrarre dati, e mettono a disposizione una serie di funzionalità comuni / comode allo scopo, che possono (e sono) sfruttate nella stragrande maggioranza dei casi.

La funzione che t'interessava viene utilizzata già molto raramente nel codice "comune" (non SQL), per cui è chiaro che si candida male per essere inclusa in un engine SQL.

P.S. Dipende da quello che c'è da fare. Generalmente preferisco far fare tutto al server SQL (tinyclient), ma ci possono essere condizioni per cui è meglio scaricare sui client parte delle operazioni (fatclient).

Matrixbob
09-12-2010, 11:23
edit: sono d'accordo con voi.