Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    12

    Consiglio su Update e Replace con clausola Like

    Ciao a tutti sto cercando di mettere su una query che mi permetta di sostituire i nomi presenti in una tabella confrontandola con un altra.
    La query che utilizzo funziona egregiamente qualora nella tabella "test" sia presente solo un nome,
    es: |tabella_1|
    | Mario |
    mentre non funziona se il nome da sostituire è compreso all'interno di altre parole.
    es: | tabella_1 |
    | Ciao mi chiamo Mario |
    In pratica dovrei inserire i caratteri jolly like '%' nel nome da cercare ma non so proprio come popolare la seguente query con questa clausola like.
    questa è la query funzionante con un solo nome senza like:
    update test
    inner join nomi on nomi.nome = test.testo
    SET test.testo=replace (testo, nomi.nome , '****')

    Spero di essere stato chiaro
    Grazie ragazzi per i vostri eventuali suggerimenti

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    287
    LIKE %Mario%

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    12
    ...magari funzionasse...
    purtroppo in nomi presenti non posso saperli, il confronto avviene tra tabelle e replace non accetta la clausola like
    ------
    update test
    inner join nomi on nomi.nome = test.testo
    SET test.testo=replace (testo, nomi.nome , '****')
    -----
    drovrei concatenare "nomi.nome" con i caratteri jolly '%' tipo ('%' || nomi.nome), ma non funziona
    ...

  4. #4
    Qual'e la struttura della/delle tue tabelle?

    secondo me hai strutturato male il tutto. Con una struttura piu idonea troveresti i tuoi dati on the fly
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    fa' un esempio pratico, grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    12
    Scusate la poca chiarezza cerco di semplificare:

    La struttura è molto semplice
    da una parte ho una tabella di nomi italiani circa 1400 (nomi)

    tabella 'nomi' con campi
    id
    nome

    dall'altra ho una tabella dove vengono memorizzati dei post (test)

    tabella 'test' con campi
    id
    testo

    vorrei poter eseguire una query che mi elimini o sostituisca tutti i nomi che vengono inseriti nella tabella 'test'

    es.
    se nella tabella ' test' viene inserito
    'Ciao sono Mario',
    con la query vorrei sostituire il post in
    'Ciao sono ****'

    Dovrei fare un like '% nomi.nome %', ma essendo un richiamo da tabella tramite join, questo non è possibile, ho cercato di concatenare icaratteri jolly tipo concat() con il nome da trovare.... ma nulla da fare.

    Premetto che la query:
    ---------------------------------------
    update test
    inner join nomi on nome = test.testo
    SET test.testo = replace (testo, nomi.nome, '****')
    -----------------------------------------
    funziona solo se nella tabella 'test' è presente solo un nome per record es:

    id: 1
    testo: Mario

    id: 2
    testo: Roberto
    ecc.

    solo in questo caso avrò:
    id: 1
    testo: ****

    id: 2
    testo: ****
    ecc.

    Grazie per l'aiuto

  7. #7
    hai provato a fare la join con la like?

    update test
    inner join nomi on test.testo LIKE '%' & nomi.nome & '%'
    SET test.testo = replace (testo, nomi.nome, '****')

  8. #8
    così non va?

    UPDATE [Test], Nomi SET [Test].[Testo] = [Nomi].[nome]
    WHERE [nomi].[nome] = "mario";


    ????

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    12
    ... si ho provato un po tutte le soluzioni,
    concat(),
    '%'+nomi.nome ecc

    anche cosi:

    update test
    join nomi on nomi.nome = test.testo
    SET test.testo = replace (test.testo, nomi.nome, '****') where nomi.nome like '%'+nomi.nome+'%'

    ... niente fa fare, l'errore è sempre lo stesso

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+nomi.nome+'%'' at line 6

    anche (ShAdOw WaLkEr)
    UPDATE [Test], Nomi SET [Test].[Testo] = [Nomi].[nome]
    WHERE [nomi].[nome] = "mario";


  10. #10

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.