2013-07-24 75 views
0

我有僱員表具有以下結構和數據。從記錄中檢索字符串值並插入另一列

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的建議,使用單獨的列。

希望這會有所幫助。

〜ķ


假如您的手機可以在任何位置開始,中間&結束。例如:下面的查詢

(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[[:>:]]'; 

---輸出---

PHONE 
7845982563 
7889451524 
7889451524 

檢查更新sql fiddle with working example

希望這將幫助!

+0

但是我的String'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

相關問題