Italian SQLite trovare numero esatto in un campo

Fulvio75

Well-Known Member
Licensed User
Ciao ho una tabella con un campo stringa contenente dei numeri separati da una virgola

campo x
1,2
5,6
13,85

devo trovare il numero giusto ad esempio se gli dico di trovare 1 deve restituirmi solo la riga 1,2 quindi la prima.
Facendo come ho fatto io mi restituisce sia la prima riga 1,2 e la terza riga 13,85 perchè trova il 13 che al suo interno ha il numero 1

come si fa?
 

Star-Dust

Expert
Licensed User
Longtime User
Fai uno split per ogni riga e uno sptlit all'interno della riga ... il resto lo puoi capire da solo ... (anche con Regex ci riusciresti...)
 

Fulvio75

Well-Known Member
Licensed User
Fai uno split per ogni riga e uno sptlit all'interno della riga ... il resto lo puoi capire da solo ... (anche con Regex ci riusciresti...)
Si l'avevo fatto per un'altra app però volevo farlo con sql.
Forse ho un'idea, con instr di sql trovo la virgola poi con substring sempre di sql trovo i due numeri prima e dopo la virgola il tutto dentro la select impostando un nuovo campo con As ed eseguendo un where nome nuovo campo
Dovrebbe funzionare
 

Fulvio75

Well-Known Member
Licensed User
Funziona:
B4X:
select Id,CreationDateTime,Code,Status,Season,WeekGroup,substr(TablesId,1,instr(TablesId,',')-1) as T1,substr(TablesId,instr(TablesId,',')+1) as T2,Notes from Tables
 

giannimaione

Well-Known Member
Licensed User
Longtime User
Query = $"SELECT * FROM ${TuaTabella} WHERE ${CampoRicerca} LIKE '%,${Valore}' OR ${CampoRicerca} LIKE '${Valore},%'"$
non può funzionare; se il camporicerca contiene "1,5,7,15,21,24" e il valore da ricercare è "5" la query non restituisce niente;
prova con questa:
B4X:
SELECT * FROM ${TuaTabella} 
WHERE ${CampoRicerca} LIKE '%,${Valore},%' 
   OR ${CampoRicerca} LIKE '${Valore},%' 
   OR ${CampoRicerca} LIKE '%,${Valore}' 
   OR ${CampoRicerca} = '${Valore}'
 

LucaMs

Expert
Licensed User
Longtime User
Grazie al flauto , Gianni, ma molto probabilmente sono numeri decimali salvati in formato stringa, quindi una sola virgola.
 

giannimaione

Well-Known Member
Licensed User
Longtime User
giriamo attorno ad un "problema" che NON è stato esposto in modo chiaro;
caro fulvio75, aggiungi qualche riferimento, altrimenti ....
 

Fulvio75

Well-Known Member
Licensed User
Risolto

B4X:
select Id,CreationDateTime,Code,Status,
iif(substr(TablesId,1,instr(TablesId,',')-1) = "",substr(TablesId,instr(TablesId,',')+1),substr(TablesId,1,instr(TablesId,',')-1)) as T1,
iif(substr(TablesId,1,instr(TablesId,',')-1) = "",'',substr(TablesId,instr(TablesId,',')+1)) as T2,
Notes from Tables
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…