Newsgroup: it.comp.appl.access
Titolo: [SQL] like

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

Prova a leggere questo:
 
https://docs.microsoft.com/it-it/dotnet/visual-basic/language-reference/operators/like-operator
 
 
@Alex

 
 
grazie
 
poi ho trovato questo:
 
 
At SQL Wildcard Characters
https://www.w3schools.com/sql/sql_wildcards.asp
 
 
Wildcard Characters in SQL Server
Symbol 	Description 	Example
% 	Represents zero or more characters 	bl% finds bl, black, blue, and 
blob
_ 	Represents a single character 	h_t finds hot, hat, and hit
[] 	Represents any single character within the brackets 	h[oa]t finds 
hot and hat, but not hit
^ 	Represents any character not in the brackets 	h[^oa]t finds hit, 
but not hot and hat
- 	Represents a range of characters 	c[a-b]t finds cat and cbt


 
 
 
Dipende da COME scrivi la QUERY... 
 
Se scrivi una QUERY di tipo PASSTROUGH allora devi usare la sintassi di SQL Standard ISO.
Se applichi ad esempio la proprietà FILTER usi la sintassi di JET...
Se usi una query NORMALE e scrivi come WildCard % ottieni un errore...
 
In ogni caso sai tu come stai operando e sicuramente i 2 documenti ti danno tutte le opzioni.
 
@Alex
 

 adesso provo a cercare su carta: SQL Server 2000 Resource Kit
 
SELECT T.aaa FROM T WHERE T.aaa Like "MIZ#*";
 
Bruno

 like 'MIZ' seguito da cifra: tenere
 
questa 'MIZ#%' non va  ( ho messo % al posto di * ) : tiene tutto
 
 
questa sě:
 
where Code not like 'MI[0123456789]%' 
 
perň mi esclude anche i valori NULL che al momento dovrei invece 
considerare, ma ho un workaround ;)


Ho eliminato per errore la replica...
 
Con la premessa:
like 'MI' seguito da cifra: buttare
like 'MIZ' seguito da cifra: tenere 
 
definto che per [cifra] tu intenda 1 solo CHAR di tipo NUMERICO... 0÷9
Perchè escludi invece di INCLUDERE...?
La tua sintassi restituirebbe VERO anche se invece di MIZ ci fosse MIP1 perchè NON è incluso nel criterio.
 
Credo invece sarebbe da scrivere così:
 
JET(se dopo il NUMERO non sono previsti altri CHARS)
WHERE Code LIKE "MIZ[0-9]"
 
SQL STANDARD ISO(se dopo il NUMERO non sono previsti altri CHARS)
WHERE Code LIKE "MIZ[0-9]"
 
JET(se dopo il NUMERO sono previsti altri CHARS)
WHERE Code LIKE "MIZ[0-9]*"
 
SQL STANDARD ISO(se dopo il NUMERO sono previsti altri CHARS)
WHERE Code LIKE "MIZ[0-9]%"
 
Vedi tu...
 
@ALex

 
 
chiarisco, anche se il filtro già lo ho trovato
 
MI+cifredallozeroalnoveripetute : buttare
 
MIZ+cifredallozeroalnoveripetute : tenere
 
altri casi al momento non sono contemplati, p.e. MIP...
 
la codifica MIZ è stato un errore, non avrebbe dovuto esistere, ma ormai 
c'è e ce la teniamo, ergo la query che *prima* buttava via tutto quello che 
iniziava per MI (ed erano solo MI+cifre) è stata modificata per tenere 
invece buoni i codici MIZ+cifre


 invece buoni i codici MIZ+cifre
 
 
Quindi basta questo, che è diverso da quello che hai scritto, anche se il tuo funziona ovviamente...:
 
WHERE CODE LIKE "MIZ%" 
 
@Alex


Ovviamenter entrambi i codici sono imperfetti... ma io preferisco sempre la logica POSITIVA... se il numero dei CHARS(Cifre) fosse fisso potresti usare il carattere # che equivale a [0÷9] ripetuto...
 
P.S. Per il NULL CASE... ti basta mettere in OR proprio il NULL...
 
WHERE CODE LIKE "MIZ#%" OR CODE IS NULL
 
@Alex

 
 
yes, il fatto è che ci sono altri codici per cui io devo ragionare in 
termini di esclusione dal totale
 
quindi
 
select * from tabella where isnull(Code, 'NULL') not like 'MI[0123456789]%' 
 
'NULL' rimpiazza NULL in modo che NULL non sia NULL ma 'NULL' :D
