[Lugge] Re: formattazione tabella SQL

  • From: "Zingus J. Rinkle" <1999s039@xxxxxxxxxxxxxxxxxx>
  • To: lugge@xxxxxxxxxxxxx
  • Date: Tue, 5 Nov 2002 07:15:27 +0100

Mah, oggi sono un po' giu'. Mi limitero' ad elencare i fatti.
Arnaudo Massimo mi ha scritto una lettera intitolata: "[Lugge]
formattazione tabela"
> Ciao a tutti,
> non riesco a capire perchè Postgres non accetti la seguente tabella: mi
> comunica che l'errore si trova vicino all'ultima parentesi tonda nella
> 22^ riga.

Scusa se dissento: :-)
psql:/tmp/soci.txt:22: ERROR:  parser: parse error at or near "(" 

Fatto sta` che il dumbo c'ha un sistema di error reporting orrendo.
Bisogna farcisi un po' la bocca.

Ed anche allora ci si mettono delle ore a pescare il punto
giusto: nel tuo caso "int(5)" e di seguito i varii "int(12)".

s/int(5)/int[5]/
s/int(12)/int[12]/

Se quello che intendevi fare era popolare la tabella di arrays
di interi...
file:///usr/local/pgsql/doc/html/arrays.html
(per chi ha il dumbo installato in /usr/local/pgsql/doc)

Solo che usare 4 byte per salvare una cifra di un numero di
telefono (che si per se` ne richiede meno di 1) e` un po'
uno spreco...

Un metodo alternativo (ed in fine dei conti leggermente piu`
portabile) sarebbe il seguente:
 -) salvare i numeri di telefono in un varchar(12)
 -) controllare che il numero sia proprio un numero in fase
 di *inserimento*, con una bella check, eg:

...
cap                     char(5)     check (cap ~ '^[0-9]*$'),
...
telefono_casa           varchar(12) check (telefono_casa ~ '^[0-9]*$'),
...

L'operatore ~ esiste solo in pgsql (AFAIK) ed e` l'operatore di
matching con regex. E` in pratica un LIKE sotto steroidi...
cfr. file:///usr/local/pgsql/doc/html/functions-matching.html

NB: in altri dbms il trucchetto cambia faccia, ma non
sostanza. e.g. in mssqlserver sostituisci il `` ~ '^[0-9]*$' ''
con un `` LIKE '[0-9]%' '' (od una cosa simile...)

Usando questo metodo inoltre si possono inserire (previa
modifica della regex) anche:
-) i "+" dei prefissi internazionali,
-) le "," che in alcuni posti (sembra) servano ad uscire dai
centralini... (trattasi, dal punto di vista di un modem,
di una pausa nella digitazione)
-) Barre o parentesi ad indicare il prefisso... (ok, e` vero,
la telecom ha tolto l'opzionalita` di quest'ultimo, ma credo
sia solo perche' _loro_ le regex non le conoscevano :-) )

Il punto piu` rognoso si questo approccio sta nel dover mettere
la stessa regex in piu` punti nel codice sql (col tristo
svantaggio di rendere piu` complicata la modifica della tavola)
Ma ci sto lavorando, magari c'e` una qualche feature di pg
che mi sfugge...

Elefantiacemente vostro,
Zingus

PS: E no, mi sfugge come l'aggiunta/rimozione di spazi possa
risolvere il problema... :-)
-- 
  _________  +-------------------------------------------------------+
\/   _____/ /  http://as0.da.ru                       icq: 164939262 |
ZJR _____/ |  mailto:zingus_at_fuckmicrosoft.com                     |
/\______/  +-------------------------------------- Zingus J. Rinkle -+
========----------
 
 Prima di scrivere in m-list per favore leggi il regolamento
 http://www.lugge.net/soci/manifesto.htm#list

 Archivio delle e-mail postate in lista
 http://www.freelists.org/archives/lugge/

 Modifica dell'account su freelists
 http://www.freelists.org/cgi-bin/lsg2.cgi 

----------========

 La sede e` aperta ogni martedi` pomeriggio 14.30-18.00
 http://www.lugge.net/soci/sede.htm
 


 

Other related posts: