簡體   English   中英

MySQL 按字符多部分拆分字符串

[英]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.12.2.2.2 ,則這些將是數據:

  • 起始行s1s2s3s4將等於1 ( s1.s2.s3.s4 / 1.1.1.1 )
  • 結束行e1e2e3e4將等於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM