Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [MYSQL] replace

  1. #1

    [MYSQL] replace

    salve a tutti,
    Voglio scusarmi con un paio di utenti che mi hanno già risposto in precedenza, ma nessuna risposta faceva al caso mio.
    vorrei chiedere una dritta su un comando MYSQL:

    UPDATE nometabella SET campodamodificare = REPLACE (campodamodificare,'__/__/19__','__/__/20__') WHERE campodamodificare LIKE '__/__/1900'

    secondo voi è giusta la sintassi?
    in pratica voglio trasformare tutte le date (che sono in testo e NON in data) del 1900 in 2000, il dubbio è sull'uso dei caratteri cosiddetti Jolly "_" e sulla clausola WHERE.

    il comando lo inserisco tramite PHPMYADMIN,
    grazie a tutti in anticipo
    Fare....o NON fare...non c'è tentare!
    YODA

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    update tabella
    set campo = concat(substring(campo,1,6),"2000")
    where substring(campo,7,4) = "1900"

  3. #3
    non va bene fare solo i primi due digit dell'anno? si tratta di una stringa.
    codice:
    UPDATE nometabella SET 
    campodamodificare = REPLACE (campodamodificare, '/19', '/20')
    con i mesi non e' possibile equivocare e con il giorno 19 neppure se metti lo slash prima dell'anno. La condizione WHERE non serve.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da piero.mac
    non va bene fare solo i primi due digit dell'anno? si tratta di una stringa.
    codice:
    UPDATE nometabella SET 
    campodamodificare = REPLACE (campodamodificare, '/19', '/20')
    con i mesi non e' possibile equivocare e con il giorno 19 neppure se metti lo slash prima dell'anno. La condizione WHERE non serve.
    Hai ragione come sempre. Decisamente più pratico

  5. #5
    Però tenete conto che in effetti ho un sacco di date che DEVONO mantenere il 19, vedi ad esempio il 1999, che diventerebbe 2099, il 1998, che diventerebbe 2098, e così via fino al 1991...
    ed è proprio ciò che voglio evitare!
    Per questo mettevo la clausola WHERE
    Mi sembra che la prima soluzione di Nicola sia quella giusta...
    o sto dicendo Ca__ate!?

    grazie per le pronte risposte
    e scusate l'ignoranza, faccio davvero fatica a raccapezzarmi con il PHP e MYSQL
    Fare....o NON fare...non c'è tentare!
    YODA

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da Griffonsuper
    Però tenete conto che in effetti ho un sacco di date che DEVONO mantenere il 19, vedi ad esempio il 1999, che diventerebbe 2099, il 1998, che diventerebbe 2098, e così via fino al 1991...
    ed è proprio ciò che voglio evitare!
    Per questo mettevo la clausola WHERE
    Mi sembra che la prima soluzione di Nicola sia quella giusta...
    o sto dicendo Ca__ate!?

    grazie per le pronte risposte
    e scusate l'ignoranza, faccio davvero fatica a raccapezzarmi con il PHP e MYSQL
    Infatti ricordavo da un altro thread una situazione del genere.
    allora però con la soluzione di piero.mac dovrebbe essere sufficiente cambiarla così

    UPDATE nometabella SET
    campodamodificare = REPLACE (campodamodificare, '/1900', '/2000')
    e così via per tutti gli altri anni da modificare

  7. #7
    Perfetto, grazie molte, spero sia l'ultima volta che "rompo" con questo argomento del campo data!
    Fare....o NON fare...non c'è tentare!
    YODA

  8. #8
    rimane sempre il fatto che sarebbe mooolto meglio che una data fosse messa in formato DATE.

    nella condizione where si sarebbe potuto usare il valore DATA per determinare il range di anni su cui fare il cambiamento. Volendo si potrebbe fare anche con STR_TO_DATE() se la versione di mysql lo permettesse

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Sì, hai ragione, non sarebbe male
    credo che prenderò ben presto in considerazione il consiglio.
    Comunque la modifica che mi avete consigliato l'ho fatta e funziona perfettamente, ora è a posto!
    grazie ancora
    Fare....o NON fare...non c'è tentare!
    YODA

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 © 2025 vBulletin Solutions, Inc. All rights reserved.