none
Filtrare una parte dei dati del campo chiave RRS feed

  • Domanda

  • Buongiorno,
    sto usando mySql Compact 3.5 in abbinamento a VisualBasic 2010 express e necessito filtrare i record su una parte del Campo Chiave di tipo stringa.

    Questa é il comando usato da me peró mi da errore:

    SELECT        Descrizione, Marca, Modello, Tipo, SUBSTRING(CodiceArticolo, 0, 9) AS prova
    FROM            Articoli
    WHERE        (prova = @p1)

    o provato anche cosi peró da ugualmente errore:

    SELECT        Descrizione, Marca, Modello, Tipo, CodiceArticolo
    FROM            Articoli
    WHERE        (substring(Codice,Articolo,0,9) = @p1)

    Per favore come posso fare per ottenere solo i primi nove caratteri del campo chiave che é del tipo stringa ?

    Grazie

    lunedì 4 novembre 2019 04:25

Risposte

  • Ciao,

    sarebbe interessante sapere il messaggio di errore che ricevi. In ogni caso, prova a cambiare approccio:

    puoi scrivere:

    WHERE  Codice LIKE '201911021%' oppure WHERE Codice LIKE @p1 + '%' dove @p1 è una variabile

    In questo modo riesci anche a sfruttare eventuali indici presenti sul campo Codice.


    HTH,

    Cristiano Gasparotto, MCSE Data Management and Analytics

    You can find me working hard every day at Datamaze!

    Please Mark This As Answer if it solved your issue or Vote This As Helpful if it helps to solve your issue. Thank you!

    lunedì 4 novembre 2019 20:05

Tutte le risposte

  • Buongiorno,

    dovresti riportare l'errore che ricevi, sarebbe di aiuto.

    A prima vista sembra sbagliato il parametro "position", il secondo, della funzione substring: il primo carattere ha posizione 1 invece che 0 e quindi doversti scrivere

     substring(Codice,Articolo, 1, 9) 

    G.

    lunedì 4 novembre 2019 06:11
  • Buongiorno,

    dovresti riportare l'errore che ricevi, sarebbe di aiuto.

    A prima vista sembra sbagliato il parametro "position", il secondo, della funzione substring: il primo carattere ha posizione 1 invece che 0 e quindi doversti scrivere

     substring(Codice,Articolo, 1, 9) 

    G.

    Ciao, quello che scrive gnic è corretto: la funzione SUBSTRING, anche in mySQL (???) richiede che il valore start parta da 1 (SUBSTRING(stringstartlength)).

    Per quanto riguarda il primo caso,oltre all'errore precedente, semplicemente non puoi utilizzare un alias in una clausola WHERE. E' concesso solo nell'ORDER BY.


    HTH,

    Cristiano Gasparotto, MCSE Data Management and Analytics

    You can find me working hard every day at Datamaze!

    Please Mark This As Answer if it solved your issue or Vote This As Helpful if it helps to solve your issue. Thank you!

    lunedì 4 novembre 2019 07:58
  • Molte grazie a tutti per le cortesi risposte.

    Ho corretto con 1 il SUBSTR peró in entrambe le soluzioni come ho scritto nel msg non funzionano, continuano a dare errore.

    Cambio il tipo di domanda quindi:

    Essendo il Codice Chiave una stringa di caratteri, che tipo di istruzione SQL posso scrivere per selezionare solo i record appartaneneti a una parte della stringa del Codice senza dover creare una routine apposita per ciclare su tutti irecord per individuare  ed estrappolare solo i record con le carratteristicche richieste?

    Es.:  Codice ="2019110210006    Ricerca left(Codice,9) = "201911021"

    Spero di essere stato abbastanza chiaro. Grazie a tutti

    lunedì 4 novembre 2019 19:41
  • Ciao,

    sarebbe interessante sapere il messaggio di errore che ricevi. In ogni caso, prova a cambiare approccio:

    puoi scrivere:

    WHERE  Codice LIKE '201911021%' oppure WHERE Codice LIKE @p1 + '%' dove @p1 è una variabile

    In questo modo riesci anche a sfruttare eventuali indici presenti sul campo Codice.


    HTH,

    Cristiano Gasparotto, MCSE Data Management and Analytics

    You can find me working hard every day at Datamaze!

    Please Mark This As Answer if it solved your issue or Vote This As Helpful if it helps to solve your issue. Thank you!

    lunedì 4 novembre 2019 20:05
  • Si funziona ... con il LIKE variabile + '%'

    Grazie mille
    • Modificato NewContex lunedì 4 novembre 2019 21:28
    lunedì 4 novembre 2019 21:25