2011-02-24 9 views
4

UPDATEプロファイルSETを動作していない= CONCAT(favourties、 "123")favourtiesのデフォルト値に設定された場合は、id = 1MYSQL、連結方式 favourties

iはfavourtiesに123を追加したいが、 NULLの場合、このクエリは機能しません。 favourtiesをNULL、その後COALESCE機能をまわり、それ

答えて

9
UPDATE profile SET favourties=CONCAT(IFNULL(favourties, ''),"123") WHERE id=1 
5

ラップでフィールドを123を付加するように設定されている場合、クエリがどうなるか:

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

おそらく、NULLに何かを連結することはできません。おそらく​​3210を使用できますか?

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

あなたは@zerkmsようifnullを使用することができます氏は述べていますが、それはSQL標準ではありません。しかし、それはより速く小さなおとぎ話です。このリンクでそれをよく読んで:http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx

2

また、あなたが期待するようにNULLを扱うCONCAT_WS()docs)を使用することができます。空の文字列に変換します:私は個人的に実際にのみ使用

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

CONCAT_WS()今はNULLを心配する必要があるので、私を悩ます。私はほとんどNULLを使用しないので、私はそれを心配する必要はありませんが、ただ入れてください。空の文字列で終わってしまう理由を理解するのが難しいと思うのは迷惑なことです。 PHPで

0

、私が使用します。

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

trans列にすでに文字列に追加します。 groupという名前のカラムでは、角括弧の内側にgroupのマークを付けずには動作しませんでしたが、transではバックティックは必要ありませんでした。