[sql] 문자열 CONCAT가 추가되지 않은 필드의 SQL UPDATE 모든 값이 작동하지 않습니다

내가하고 싶은 일은 다음과 같습니다.

현재 테이블 :

+----+-------------+  
| 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가 작동하지 않습니다.