Kiedy to zapytanie
UPDATE tabex SET field1=CONCAT(tabex.a1,', ',tabex.a2,', ',tabex.a3,', ',tabex.a4,', ',tabex.a5,', ',tabex.a6,', 'tabex.a7,', ',tabex.a8,', ',tabex.a9 );
nie wpływa na wiersz, jedynym wyjaśnieniem byłoby to, że tabela jest pusta. Zaktualizuje każdy wiersz w tabeli. Ale jeśli jedna z kolumn ma wartość NULL, Twoja kolumna field1 również będzie miała wartość NULL.
Aby tego uniknąć, musisz użyć funkcji COALESCE(). Ta funkcja zwraca pierwszy ze swoich parametrów, który nie jest NULL.
UPDATE tabex SET field1=CONCAT(COALESCE(tabex.a1, ''),', ',...);
Na marginesie muszę zapytać, dlaczego chcesz to zrobić. Wartości oddzielone przecinkami w kolumnach są przez większość czasu złym pomysłem.
I na koniec, twoje zapytanie używające CONCAT_WS() jest błędne. _WS w nazwie funkcji jest skrótem od "z separatorem", więc pierwszym parametrem jest separator, który jest następnie umieszczany między innymi parametrami funkcji. Powinieneś więc napisać to tak:
UPDATE tabex SET field1=CONCAT_WS(',', tabex.a1, tabex.a2, tabex.a3,...);
Kolejną zaletą funkcji CONCAT_WS() jest to, że ignoruje ona wartości NULL. Przeczytaj więcej o tych dwóch funkcjach w podręczniku .