MySQL
MySQL
SELECT SUBSTRING_INDEX('a.b.c', '.', 2); -- 'a.b'(前 2 段)
SELECT SUBSTRING_INDEX('a.b.c', '.', -1); -- 'c'(倒数第 1 段起)
SELECT SUBSTRING_INDEX('a.b.c', '.', -2); -- 'b.c'PostgreSQL
PostgreSQL
SELECT split_part('a.b.c', '.', 2); -- 'b'(1 起)
-- PostgreSQL 14 起支持负索引
SELECT split_part('a.b.c', '.', -1); -- 'c'| MySQL | count 为正取左侧,为负取右侧;找不到分隔符时返回原串 |
|---|---|
| PostgreSQL | split_part(str, delim, n) 取第 n 段,段不存在返回空串 |
| 区别 | MySQL 返回“某段之前/之后”,PG 返回“第几段”,语义不同 |