2013-07-24 4 views
0

다음과 같은 구조 및 데이터를 가진 employee 테이블이 있습니다.레코드에서 문자열 값을 검색하여 다른 열에 삽입하십시오.

id  name  empDetails             phone 
1  John  phone:7845982563,pinCode:7895645,subCode:22  
2  pitt  phone:7889451524,pinCode:2565479,subCode:24 
3  ken  empId:3243,phone:283241524,pinCode:2563479,subCode:25 
4  rancho  empId:3263,phone:454424154,pinCode:5565479,subCode:24 
.   .     . 

Sometimes phone poistion will be after empId also. 

는 지금은 예 다음 전화 번호를 얻을 수와 같은 행에 새 휴대 전화 컬럼에 삽입하면 열 empDetails

문자열 전화 할 수 있는지 확인하고 싶다.

레코드에 문자열 전화가 포함되어 있는지 확인할 수 있습니다.

SELECT employee.empDetails FROM employee WHERE employee.empDetails LIKE '%phone:%' 

그러나 전화 번호를 다시 검색하여 동일한 레코드로 다른 열에 삽입하는 방법은 무엇입니까?

감사합니다, 전화 번호를 가정하면 항상 접두어됩니다 아리아

+1

를 참조하십시오? 전화, pinCode, subCode 등에 대해 별도의 열이 있습니까? 정보를 훨씬 쉽게 검색 할 수 있습니다. 많은 매개 변수에 값이 없을 수도있는 경우에는 세로 테이블에 정보를 저장하고 사용자의 ID에이 정보를 조인 할 수 있습니다. – mcriecken

답변

1
SELECT replace(SUBSTRING_INDEX(empDetails,',',1),'phone:','') as phone 
FROM Table1 
where empDetails REGEXP '[[:<:]]phone[[:>:]]'; 

확인 작업 바이올린이 :) 트릭 할 것입니다 : http://sqlfiddle.com/#!2/802d2/18

spaceman817의 조언으로 이동하십시오를, 별도의 열을 사용합니다.

희망이 도움이 될 것입니다.

~ K는


, 휴대 전화가 어떤 위치의 시작이 될 수 중간 & 끝을 가정 해 봅시다. 예를 들어 쿼리 아래

(1, 'John', 'phone:7845982563,pinCode:7895645,subCode:22'), 
(2, 'pitt', 'pinCode:2565479,subCode:24,phone:7889451524'), 
    (3, 'vk', 'pinCode:2565479,phone:7889451524,subCode:24'); 

사용 :

SELECT 
replace(SUBSTRING_INDEX(SUBSTRING(empDetails,LOCATE('phone:',empDetails)),',',1),'phone:','') as phone 
FROM Table1 where empDetails REGEXP '[[:<:]]phone[[:>:]]'; 

--- OUTPUT

---

PHONE 
7845982563 
7889451524 
7889451524 

확인 갱신 sql fiddle with working example :이 도움이 될 것입니다

희망!

+0

하지만 내 문자열'phone' 위치는 고정되어 있지 않습니다. 때로는 empId 다음에옵니다.내 질문을 업데이트했습니다 – Java

+0

','& 휴대 전화에 대한 확인 및 값을 잡아 폭발에 의해 PHP에서 할 수 있습니까? –

+0

아니요. PHP를 사용하고 있지 않습니다. – Java

2
update employee.empDetails set phone = cast(replace(empDetails, 'phone:', '') as unsigned) 
where employee.empDetails LIKE '%phone:%' 

'전화'
없는 깨끗한 대답. 그러나 여기

+0

@ Akhil 답장을 보내 주셔서 감사하지만 empDetails 항목에서 콘텐츠를 삭제하고 싶지 않습니다. – Java

+0

전화 필드 만 업데이트 중입니다. 감동/업데이트 empDetails 열 – Akhil

+0

그래, 사실이야,하지만 내 문자열 전화 위치가 고정되지 않습니다, 때로는 empId 후에 온다. 나는 내 질문을 업데이트했다. 따라서 '전화'가 첫 번째 위치에있는 경우에만 답변을 사용할 수 있습니다. – Java

0

당신이 데이터를 분리하지 않는 이유는

update employee set 
phone = SUBSTR(SUBSTRING_INDEX(empDetails,'phone:',-1) from 1 for instr(SUBSTRING_INDEX(empDetails,'phone:',-1),',')-1) 
where employee.empDetails LIKE '%phone:%' 

PLZ는 http://sqlfiddle.com/#!2/10c8c4/40

관련 문제