복붙노트

[SQL] 추가 된 문자열 CONCAT가 작동하지 필드에서 SQL UPDATE는 모든 값

SQL

추가 된 문자열 CONCAT가 작동하지 필드에서 SQL UPDATE는 모든 값

여기에 내가하고 싶은 것입니다 :

현재 테이블 :

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | max         |  
|  2 | linda       |  
|  3 | sam         |  
|  4 | henry       |  
+----+-------------+  

미스터리 쿼리 (같은 "UPDATE 테이블 SET 데이터 = CONCAT (데이터, 'A')")

테이블을 결과 :

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | maxa        |  
|  2 | lindaa      |  
|  3 | sama        |  
|  4 | henrya      |  
+----+-------------+  

그것을 이잖아! 난 그냥 하나의 쿼리에서 그것을 할 필요가 있지만, 방법을 찾을 수없는 것. 내가 Bluehost를에서 MySQL (나는 그것의 버전 4.1을 생각)를 사용하고 있습니다

감사합니다 여러분.

해결법

  1. ==============================

    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에서이 테스트를하고 있지만, 문제가 될 것

  2. ==============================

    2.NULL 값을 반환 널 (null)와 CONCAT, 가장 쉬운 해결책은 그래서 :

    NULL 값을 반환 널 (null)와 CONCAT, 가장 쉬운 해결책은 그래서 :

  3. ==============================

    3.

    UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
    

    나를 위해 작동하지 않습니다.

    스페어 기본 있지만 VARCHAR에 의해 NULL입니다

  4. ==============================

    4.COALESCE에 싸서 빈 문자열과 NULL 값을 변환

    COALESCE에 싸서 빈 문자열과 NULL 값을 변환

    "UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
    

    또는

    사용 CONCAT_WS 대신 :

    "UPDATE table SET data = CONCAT_WS(',',data, 'a')"
    
  5. ==============================

    5.

    UPDATE 
        myTable
    SET 
        col = CONCAT( col , "string" )
    

    그것을 밖으로 작동하지 않을 수 없습니다. 요청 구문은 정확하지만, 실행시에 "0 라인은 영향".

    이 솔루션은 있었다 :

    UPDATE 
        myTable 
    SET 
        col = CONCAT( myTable.col , "string" )
    

    그 하나는했다.

  6. ==============================

    6.그것을 해결. 열 밝혀, 그것은 받아 들일 문자의 제한된 있었다를 변경, 지금 쿼리가 잘 작동합니다.

    그것을 해결. 열 밝혀, 그것은 받아 들일 문자의 제한된 있었다를 변경, 지금 쿼리가 잘 작동합니다.

  7. ==============================

    7.이 작업을 수행 할 수 있습니다 :

    이 작업을 수행 할 수 있습니다 :

    Update myTable
    SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
    WHERE id = 1
    

    필드가 null의 경우 필드 = 필드 + 값이없는 작업을 수행합니다.

  8. from https://stackoverflow.com/questions/4128335/sql-update-all-values-in-a-field-with-appended-string-concat-not-working by cc-by-sa and MIT license