Mysql
對單個列執行 SQL 字元串操作
我最近在一次面試中遇到了一個我無法回答的問題。要求是編寫一些 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 等值
如何做到這一點?
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<>在這裡擺弄