Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySql] Eliminare carattere di "a capo" nella select

    Buon pomeriggio a tutti.
    Ho una tabella con dati importati da file csv.
    Il file non lo genero io e non lo carico io, quindi mi ritrovo a dover gestire la "monnezza".
    Detto questo, ho provato ad utilizzare TRIM() nella query, ma senza risultato.
    C'è un modo per ovviare a questo problema?
    [code]
    SELECT * FROM ".TB_DATI." WHERE SUBSTR(pericentro,1,1) = '".$lista."' AND TRIM(matricola)='".$codImm."'
    [code]

    Il problema non è il dato che ricevo per la ricerca $codImm, bensi quello che risiede nella tabella TB_DATI
    Grazie.

  2. #2
    Ciao,

    suppongo che MySql abbia una funzione REPLACE con la quale sostituire gli a capo.

    https://www.w3schools.com/sql/func_mysql_replace.asp

    HTH
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

  3. #3
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    Buon pomeriggio a tutti.
    Ho una tabella con dati importati da file csv.
    Il file non lo genero io e non lo carico io, quindi mi ritrovo a dover gestire la "monnezza".
    Detto questo, ho provato ad utilizzare TRIM() nella query, ma senza risultato.
    C'è un modo per ovviare a questo problema?
    codice:
    SELECT * FROM ".TB_DATI." WHERE SUBSTR(pericentro,1,1) = '".$lista."' AND TRIM(matricola)='".$codImm."'
    Il problema non è il dato che ricevo per la ricerca $codImm, bensi quello che risiede nella tabella TB_DATI
    Grazie.
    Il dato sporco è in "pericentro" o in "matricola"?
    Qual'è lo scopo della query, cioè cosa rappresenta pericentro e matricola, da doverlne prendere una substringa di un carattere e da fare trim della matricola?
    Se riesci a postare un record e una query e dirci cosa ti restituisce e cosa vorresti ottenere è meglio...
    Detto questo, a intuito, tu cerchi una substring di lunghezza 1 che sia uguale a $lista...partendo dal primo carattere.
    Quindi sia "pippo" che "pluto" vanno bene, se definisci $lista come "p"...in pratica non serve a nulla, basta un "LIKE 'p%" che è un pelo più performante sui campi text.
    Riguardo a matricola stessa cosa, se il campo matricola è "pasticciato" prova con "LIKE %{$codiceImm}%", così non devi preoccuparti di altri caratteri/spazi prima o dopo, nella tabella :-)

  4. #4
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    Ciao,

    suppongo che MySql abbia una funzione REPLACE con la quale sostituire gli a capo.

    https://www.w3schools.com/sql/func_mysql_replace.asp

    HTH
    Ti ringrazio per la tua soluzione

  5. #5
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    Il dato sporco è in "pericentro" o in "matricola"?
    Qual'è lo scopo della query, cioè cosa rappresenta pericentro e matricola, da doverlne prendere una substringa di un carattere e da fare trim della matricola?
    Se riesci a postare un record e una query e dirci cosa ti restituisce e cosa vorresti ottenere è meglio...
    Detto questo, a intuito, tu cerchi una substring di lunghezza 1 che sia uguale a $lista...partendo dal primo carattere.
    Quindi sia "pippo" che "pluto" vanno bene, se definisci $lista come "p"...in pratica non serve a nulla, basta un "LIKE 'p%" che è un pelo più performante sui campi text.
    Riguardo a matricola stessa cosa, se il campo matricola è "pasticciato" prova con "LIKE %{$codiceImm}%", così non devi preoccuparti di altri caratteri/spazi prima o dopo, nella tabella :-)
    Lo sporco sta nel campo "matricola", ma nel db.
    Quindi credo che la soluzione sia utilizzare like come da te indicato.

    Grazie a tutti

  6. #6
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    Lo sporco sta nel campo "matricola", ma nel db.
    ....
    a giudicare dal nome del campo "matricola" il fatto che contenga degli 'a capo'
    sembrerebbe un'anomalia da correggere alla fonte, ovvero direttamente nel db;

    ne beneficerebbe anche la performance della query se dopo la bonifica nel db
    puoi scrivere matricola=<tua variabile>

    HTH
    O santo protettore del'informatico quadratico medio , se puoi allontana da me questo cetriolo amaro!
    Programmazione agile ? Guarda che qua già da un pezzo facciamo programmazione acrobatica !

  7. #7
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    a giudicare dal nome del campo "matricola" il fatto che contenga degli 'a capo'
    sembrerebbe un'anomalia da correggere alla fonte, ovvero direttamente nel db;

    ne beneficerebbe anche la performance della query se dopo la bonifica nel db
    puoi scrivere matricola=<tua variabile>

    HTH
    Giusto,
    ma Antagonia ci dice che i dati nel db non li crea e non li carica lui, quindi se "adesso" fa una pulizia del campo matricola, domani gli caricano altri dati ed è punto a capo con dati sporchi...dovrebbe quindi fare un cron o similari che ogni giorno, ad esempio di notte, esegue la pulizia. Può essere una soluzione ma se parliamo di pochi record (un migliaio) e poche insert (una, due al giorno a orari fissi). Se invece per mille motivi i file csv vengono caricati più volte al giorno o ad orari non prestabiliti è praticamente impossibile, dovresti far girare la query di pulizia ogni tot minuti, col rischio di rimanere alcuni secondi/minuti con dati sporchi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.