2011-04-13 3 views
0

: http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/계산 된 mysql 결과에서 기존/존재하지 않는 열의 데이터를 다른 열로 삽입하십시오. 문자열을 분할 기능을 사용

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1) , ' ', -1) AS firstname, 
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2) , ' ', -1) AS lastname 
FROM users; 

나는 다음과 같은 resuts를 얻을 :

firstname | lastname | 

    john  doe 

    jane  doe 

나는 다음과 같은 질문이 있습니다

1) 나는에 값을 삽입 할 수있는 방법을 동일한 테이블 아래에 이미있는 열?

2.) 같은 테이블 아래에 존재하지 않는 열에 값을 삽입하려면 어떻게해야합니까? 물론

는 두 개의 열이 값을 삽입하려면 firstname | lastname

+0

존재하지 않는 열은 무엇을 의미합니까? 동적으로 열을 만들 수는 없습니다. 주어진 행의 필드가 null 인 곳을 의미합니까? – squawknull

+0

아, 나는 똑바로 생각하지 못했을 것 같아요. 어떤 이유로 동적으로 열을 만들 수 있다고 생각했습니다. 이미 존재하는 열에 대한 내 질문을 편집 하시겠습니까? – Tek

+0

나는 당신이하려는 것을 추측하고있다. 모든 열은 테이블 스키마에 정의되어야합니다. create table as select ... 구문을 사용하여 새 테이블을 만들 수 있지만 기존 테이블에 열을 추가하는 것은 아닙니다. 열이 테이블에 대해 정의되지 않은 경우 alter table add column ... 문을 사용하여 열을 추가해야합니다. – squawknull

답변

0

인 :

INSERT INTO users (firstname, lastname) 
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1) , ' ', -1) AS firstname, 
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2) , ' ', -1) AS lastname 
FROM users; 

이 같은 행에 대해 기존 값을 업데이트하려면 :

update users 
set firstname = SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1) , ' ', -1), 
    lastname = SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2) , ' ', -1) 

가 기존 값을 업데이트하려면 다른 행 :

update users users_a, users users_b 
set users_b.firstname = SUBSTRING_INDEX(SUBSTRING_INDEX(users_a.fullname, ' ', 1) , ' ', -1), 
    users_b.lastname = SUBSTRING_INDEX(SUBSTRING_INDEX(users_a.fullname, ' ', 2) , ' ', -1) 
where users_a.??? = users_b.??? /* join condition as appropriate */ 
+0

마지막 작품, 감사합니다. – Tek

관련 문제