[英]MySQL Split string by character mutli-part
我想向查詢添加一個時態列。
我有一個表example_ip_db
,其中包含s1,s2,s3,s4,e1,e2,e3,e4,cc
行。
這些s1,s2,s3...
行表示e1,e2,e3...
start of ip range
end of ip range
。 例如,如果中國 ( CN
) 的 ip 范圍為1.1.1.1
到2.2.2.2
,則這些將是數據:
s1
、 s2
、 s3
、 s4
將等於1
。 ( s1.s2.s3.s4
/ 1.1.1.1
)e1
、 e2
、 e3
、 e4
將等於2
。 ( e1.e2.e3.e4
/ 2.2.2.2
)cc
行將等於CN
。 我想要的是將列county
添加到不存在的example_ip_db
表/行/數據中。 類似於以count(*) as 'amount'
查詢的生成列。
我怎樣才能為此拆分IP?
您在 mysql 中使用 SUBSTRING() 函數。
例如。
mysql> SELECT SUBSTRING('habonytest', -3);
-> est
mysql> SELECT SUBSTRING('habonytest', -5, 2);
-> yt
mysql> SELECT SUBSTRING('habonytest', FROM -5 FOR 4);
-> ytes
mysql 也有 SUBSTRING_INDEX() 函數。
例子:
mysql> SELECT SUBSTRING_INDEX('myid@domain.com', '@', -1);
-> domain.com
mysql> SELECT SUBSTRING_INDEX('myid@domain.com', '@', 1);
-> myid
謝謝! (@Star_Man)
解決了:
SELECT IP, SUBSTRING_INDEX( IP, '.', 1 ) AS part1,
SUBSTRING_INDEX( SUBSTRING_INDEX( IP, '.', 2 ) , '.' , -1 ) AS part2,
SUBSTRING_INDEX( SUBSTRING_INDEX( IP, '.' , -2 ) , '.', 1 ) AS part3,
SUBSTRING_INDEX( IP, '.' , -1 ) AS part4,
(SELECT `cc`
FROM `example_ip_db`
WHERE `s1` <= part1
AND `e1` >= part1
AND `s2` <= part2
AND `e2` >= part2
AND `s3` <= part3
AND `e3` >= part3
AND `s4` <= part4
AND `e4` >= part4
) AS CC
FROM `example_saved_ip_from`
WHERE 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.