/ / MYSQL Concat не работи - mysql, конкатенация

MYSQL Concat не работи - mysql, конкатенация

UPDATE профил SET favourties = CONCAT (favourties ", 123") WHERE id = 1

Искам да добавя 123 в favourties, но ако стойността по подразбиране на favourties е настроена на NULL, тогава тази заявка няма да работи. Какво ще бъде заявката, ако favourties е настроено на NULL и след това се добавя 123 с него

Отговори:

9 за отговор № 1
UPDATE profile SET favourties=CONCAT(IFNULL(favourties, ""),"123") WHERE id=1

5 за отговор № 2

Обвийте полето с COALESCE функция:

UPDATE profile
SET favourties = CONCAT(COALESCE(favourties, ""),"123")
WHERE id=1

3 за отговор № 3

Вероятно не можете да свързвате нещо с NULL coalesce?

UPDATE profile SET favourties=CONCAT(COALESCE(favourites,""),"123") WHERE id=1

виж: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

Можеш да използваш ifnull както казва @zerkms, но това не е в SQL стандарта. Въпреки това е малко по-бързо. Прочетете го на тази връзка: http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx


2 за отговор № 4

Можете също така да използвате CONCAT_WS() (документи), която се занимава с NULL, както бихте очаквали: ги конвертира в празен низ:

UPDATE profile SET favourties = CONCAT_WS("", favourties, "123") WHERE id = 1;

Аз лично използвам само CONCAT_WS() Сега, защото трябва да се притеснявате за NULL ме дразни. Рядко използвам NULLs, така че не трябва да се тревожа за това, а просто да го направя. ,


0 за отговор № 5

В PHP използвам:

SET `trans`=concat("$var", trans)

за добавяне към низ вече в trans колона. Тя нямаше да работи на името на колоната group без да се използва обратно group вътре в скобите също, докато при транс, обратно кърлежите не бяха необходими.