Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: petrusic - Ottobre 26, 2021, 05:33:06 pm

Titolo: Dbbrowser - Esecuzione select filtrata da Where
Inserito da: petrusic - Ottobre 26, 2021, 05:33:06 pm
Quando scrivo un'istruzione sql, è mia abitudine provarla col DBBrowser, alfine di evitare sorprese durante l'esecuzione del programma che la conterrà.

E poichè ora mi trovo nella necessità di dover filtrare i record di una tabella di DataBase (DB) SQLite per estrarre pochi record, direi principali rispetto ad famiglia di diversi record, vorrei affidare l'operazione di filtraggio all'istruzione sql, piuttosto che farla io per ciascun record letto. Ho perciò scritto una SELELCT che ho replicato in ambiente DBBrowser così
Codice: [Seleziona]
SELECT NumVoce, NomeVoce FROM piancont WHERE NumVoce >= 101001000 AND NumVoce <= 101297000
AND RIGHT(NumVoce, 3) = 000
 AND DtUltimUso >= 20200101 OR DtUltimUso = 0 ORDER BY NumVoce
DBBRowser ha segnalato un errore di sintassi legato al carattere "(" che precede la parola RIGHT.

Sapete come potere entrare in possesso della terminologia sintattica dei comandi da eseguire direttamente in DBBRowser?
Titolo: Re:Dbbrowser - Esecuzione select filtrata da Where
Inserito da: nomorelogic - Ottobre 26, 2021, 05:49:06 pm
Codice: [Seleziona]
SELECT NumVoce, NomeVoce FROM piancont WHERE NumVoce >= 101001000 AND NumVoce <= 101297000
AND RIGHT(NumVoce, 3) = 000
 AND DtUltimUso >= 20200101 OR DtUltimUso = 0 ORDER BY NumVoce

RIGHT restituisce una stringa ma tu confronti il risultato con un numero

prova con
Codice: [Seleziona]
SELECT NumVoce, NomeVoce FROM piancont WHERE NumVoce >= 101001000 AND NumVoce <= 101297000
AND RIGHT(NumVoce, 3) = '000'
 AND DtUltimUso >= 20200101 OR DtUltimUso = 0 ORDER BY NumVoce
Titolo: Re:Dbbrowser - Esecuzione select filtrata da Where
Inserito da: petrusic - Ottobre 26, 2021, 06:42:57 pm
Prova fatta, ma non funziona . Da sempre lo stesso errore
Citazione
Risultato: near "(": syntax error
Alla riga 1:
SELECT NumVoce, NomeVoce, DtUltimUso FROM piancont WHERE NumVoce >= 101001000 AND NumVoce <= 101297000 AND RIGHT(

Comunque, non ti preoccupare. Non mi serve più. Ho risolto in altro modo.
Grazie, comunque.
Titolo: Re:Dbbrowser - Esecuzione select filtrata da Where
Inserito da: SB - Ottobre 29, 2021, 04:18:10 pm
Petrusic, scusa se mi permetto, probabilmente è esattamente quello che ti serve, ma l'OR senza parentesi mi lascia molto perplesso, se ho inteso correttamente il senso della query