On Thu, 08 Mar 2012 21:21:38 +0100, Salvatore Larosa wrote:
CREATE TABLE (id serial, nome text);

la tabella avrà due campi [id] e [nome]. Se modifichi il campo [nome] e
lo rinomini in [end] la query non viene eseguita perchè END è una
cosiddetta reserved word per il linguaggio SQL!


Niet !!!
puoi usare tutte le parole riservate che credi ...
pero' le devi "infiocchettare" nel modo standad specificato dalla
sintassi universale di SQL.
N.B.: "universale", vale per sqlite, postgres, M$ access etc etc

e qua scatta un altro tipo di quoting: quello con "doppio apice",
ossia "virgolette".
qualsiasi parola racchiusa tra doppi apici non e' piu' un nome
riservato SQL, ma diventa un banalissimo nome definito dall'utente.

provare per credere:

CREATE TABLE "insert" (
  "select" INTEGER PRIMARY KEY,
  "where" DOUBLE,
  "from" TEXT,
  "join" TEXT);

vedrai che funziona perfettamente, appunto perche' qualsiasi
nome racchiuso tra (") diventa un nome utente banale.

e funziona anche questa:

INSERT INTO "insert" ("select", "where", "from", "join")
  VALUES (1, 2.5, 'alfa', 'beta');

please, nota la finezza: "doppi apici" per delimitare i NOMI,
'singoli apici' per delimitare le costanti stringa (testo).

naturalmente l'escaping per raddoppio vale anche per i doppi
apici: se mai ti venisse voglia di definire una colonna o
tavola che contiene un carattere (") al suo interno, lo devi
mascherare per raddoppio. p.es.:

ALTER TABLE "insert" RENAME TO "studenti del liceo ""giulio cesare""";

N.B.: questo dice lo standard SQL.
se pero' vuoi incapsulare queste espressioni SQL all'interno di un
qualsiasi linguaggio di programmazione, devi sommare i criteri di
escaping del tuo linguaggio con quelli di SQL.
se p.es. vuoi incapsulare il comando SQL di cui sopra in una
stringa C/C++, allora ti diventera' qualcosa come:

sql_stmt = "ALTER TABLE \"insert\" RENAME TO \"studenti del liceo \"\"giulio cesare\"\"\";");

in questo caso la barra (\) non c'entra proprio nulla con SQL, ma
serve a mascherare i doppi apici dentro alla stringa C/C++.

inizi a pensare che e' tutto un casino spaventoso ? yes, sei nel giusto :-D

ma con un po' di perseveranza, di attenzione e di pazienza alla fine se insisti
scoprirai che e' tutto perfettamente logico e razionale

ciao Sandro



--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
569 iscritti al 4.1.2012

Rispondere a