これが私がやりたいことです。
現在のテーブル:
+----+-------------+
| id | data |
+----+-------------+
| 1 | max |
| 2 | linda |
| 3 | sam |
| 4 | henry |
+----+-------------+
ミステリークエリ("UPDATE table SET data = CONCAT(data, 'a')"
のようなもの)
結果の表
+----+-------------+
| id | data |
+----+-------------+
| 1 | maxa |
| 2 | lindaa |
| 3 | sama |
| 4 | henrya |
+----+-------------+
それでおしまい!私はただ一つの問い合わせでそれをする必要があります、しかし方法を見つけるようには思えません。私はbluehostでmySQLを使っています(私はそのバージョン4.1だと思います)
みんな、ありがとう。
必要なものはそれだけです。
mysql> select * from t;
+------+-------+
| id | data |
+------+-------+
| 1 | max |
| 2 | linda |
| 3 | sam |
| 4 | henry |
+------+-------+
4 rows in set (0.02 sec)
mysql> update t set data=concat(data, 'a');
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> select * from t;
+------+--------+
| id | data |
+------+--------+
| 1 | maxa |
| 2 | lindaa |
| 3 | sama |
| 4 | henrya |
+------+--------+
4 rows in set (0.00 sec)
私は5.1.41でこれをテストしていますが、なぜあなたは問題を抱えているのでしょうか?
NULL値を指定したCONCATはNULLを返すので、最も簡単な解決策は次のとおりです。
UPDATE myTableのSET spares = IFNULL(CONCAT(スペア、 "文字列")、 "文字列")
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
私のために働いていません。
スペアはデフォルトでNULL
ですが、そのvarchar
それを解決しました。カラムの文字数が制限されていて変更されていて、クエリが正常に機能することがわかりました。
NULL
にラップすることで、空の文字列でCOALESCE
の値を変換します
"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
OR
代わりに CONCAT_WS を使用してください。
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
UPDATE
myTable
SET
col = CONCAT( col , "string" )
うまくいかなかった。リクエストの構文は正しかったが、実行時に「0行が影響を受けた」。
解決策は次のとおりです。
UPDATE
myTable
SET
col = CONCAT( myTable.col , "string" )
それはうまくいった。
あなたはこれを行うことができます:
Update myTable
SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
WHERE id = 1
fieldがnullの場合、field = field + valueは機能しません。