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

    [MySql] aggiornamento campo con Concat

    Ciao.
    Devo aggiornare il campo di una tabella con il valore di altri due campi di un'altra tabella.

    Ho provato la seguente query:

    Update `Tab1`
    set
    `Tab1`.`Campo1`=
    (SELECT
    Concat(`Tab2`.`Campo2`,'(',
    `Tab2`.`Campo3`,')')
    FROM
    `Tab2`
    WHERE
    `Tab1`.`IDTab1` = `Tab2`.`IDTab2`)

    però mi da il seguente errore:

    1263 - Column set to default value; NULL supplied to NOT NULL column 'Campo1' at row 0

    Il campo Campo1 è un varchar che non accetta null.

    Dove sta il problema?
    Grazie.
    Ciao.

    p.s.: sto usando Navicat MySql.

  2. #2
    prova cosi'.
    codice:
    Update Tab1, Tab2 
    set 
    Tab1.Campo1 = Concat(Tab2.Campo2, ' ', Tab2.Campo3) 
    WHERE Tab1.IDTab1 = Tab2.IDTab2

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    2
    Ciao Nicyork

    premetto che non conosco MySql e non ho un ambiente di test per effettuare una verifica, ma con SQL un problema del genere si verifica se uno dei due campi della seconda tabella è null, in quanto la concatenazione di stringa, se uno dei valori è null, ritorna sempre null e quindi fallisce l'update.

    In SQL puoi usare la funzione

    ISNULL ( check_expression , replacement_value )

    dove check_expression è il campo del db che può essere nullo e
    replacement_value è il valore da ritornare,

    nel tuo caso, se fosse SQL, sarebbe

    ISNULL(Tab2.Campo2, "")

    Adesso non ti resta di verificare se la funzione è la stessa anche per MySQL

    Ciao

  4. #4
    Grazie Piero.Mac... così sembra che funziona!


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.