首页/数据/SQL 速查/LEFT / RIGHT 取左右子串
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

LEFT / RIGHT 取左右子串

从字符串左端或右端取固定长度:常用于取编号前缀、手机号后四位、年份前两位;按字符计算,适合处理多字节文本。

SQL 速查数据更新于 2026-10-12

示例

示例
-- MySQL / PostgreSQL 通用
SELECT LEFT(order_no, 4)  AS prefix,
       RIGHT(phone, 4)    AS phone_tail
FROM orders;
LEFT(str, n)取左侧 n 个字符;n 超长时返回整个字符串
RIGHT(str, n)取右侧 n 个字符
PostgreSQLn 为负数时语义为“去掉另一端 |n| 个字符”,与直觉不同,不建议依赖
对索引列用 LEFT()/RIGHT() 过滤(如 WHERE LEFT(code,4)='A001')无法走索引,改为范围条件或前缀 LIKE。

易错点

  • Oracle 用户注意:Oracle 没有 LEFT/RIGHT,需要用 SUBSTR;跨库脚本要统一改写
  • 对多字节字符按“字节”截断会破坏编码,LEFT/RIGHT 按字符计,安全

数据来源与参考

  • MySQL 8.0 Reference Manual · String Functions
  • PostgreSQL Documentation · String Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌