UPDATE профил SET favourties = CONCAT (favourties ", 123") WHERE id = 1
Искам да добавя 123 в favourties, но ако стойността по подразбиране на favourties е настроена на NULL, тогава тази заявка няма да работи. Какво ще бъде заявката, ако favourties е настроено на NULL и след това се добавя 123 с него
Отговори:
9 за отговор № 1UPDATE 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
вътре в скобите също, докато при транс, обратно кърлежите не бяха необходими.