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 かどうかを確認したい

はいの場合は電話番号を取得し、電話番号を取得して同じ行の新しい電話列に挿入します。

このようにして、レコードに文字列 phone が含まれているかどうかを確認できます。

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

しかし、電話番号を取得して同じレコードの別の列に挿入するにはどうすればよいでしょうか?

ありがとう、アーリア人

4

3 に答える 3

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

電話番号の前に常に「phone:」が付くと仮定すると
、明確な答えではありません。しかし、トリックを行います:)

于 2013-07-24T13:09:36.307 に答える
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[[:>:]]'; 

- -出力 - -

PHONE
7845982563
7889451524
7889451524

実際の例でSQLフィドルの更新を確認してください:

これが役立つことを願っています!

于 2013-07-24T13:21:25.560 に答える