내가하고 싶은 일은 다음과 같습니다.
현재 테이블 :
+----+-------------+
| 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에서 이것을 테스트하고 있지만 왜 문제가 발생했는지 잘 모르겠습니다.
답변
널값을 갖는 CONCAT는 널을 리턴하므로 가장 쉬운 해결책은 다음과 같습니다.
UPDATE myTable SET spares = IFNULL (CONCAT (spares, “string”), “string”)
답변
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
나를 위해 일하지 않습니다.
여분은 NULL
기본적으로 있지만varchar
답변
NULL
빈 문자열로 값을 감싸서 변환하십시오 .COALESCE
"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
또는
대신 CONCAT_WS 를 사용하십시오 .
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
답변
해결했습니다. 열에 허용되는 문자 세트가 제한되어 있고 열이 바뀌면 쿼리가 제대로 작동합니다.
답변
UPDATE
myTable
SET
col = CONCAT( col , "string" )
해결하지 못했습니다. 요청 구문이 정확했지만 실행시 “0 line 영향을 받았습니다”.
해결책은 다음과 같습니다.
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가 작동하지 않습니다.