Mysql

對單個列執行 SQL 字元串操作

  • August 8, 2020

我最近在一次面試中遇到了一個我無法回答的問題。要求是編寫一些 SQL 來獲取兩個小數點後的前三個數字。

例如: 輸入表:

IP address
1.2.3.4.5
11.22.33.44.55
5.6.7.8.9
111.222.333.444
.
.
.
Output table:
IP address
1.2.3
11.22.33
5.6.7
111.222.333
.
.

我最初的方法是使用內置的子字元串。例如:從表中選擇 substring(ip,0,5)。但這是一個錯誤的邏輯,因為它沒有考慮 11.22.33 或 111.222.333 等值

如何做到這一點?

使用SUBSTRING_INDEX

CREATE TABLE Table1
    (`IP_address` varchar(15))
;
    
INSERT INTO Table1
    (`IP_address`)
VALUES
    ('1.2.3.4.5'),
    ('11.22.33.44.55'),
    ('5.6.7.8.9'),
    ('111.222.333.444')
;
SELECT SUBSTRING_INDEX(`IP_address`,'.',3) FROM Table1;
| SUBSTRING_INDEX(`IP_address`,'.',3) |
| :---------------------------------- |
| 1.2.3 |
| 11.22.33 |
| 5.6.7 |
| 111.222.333 |

db<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/273432