mysql字符串如何截取

mysql字符串如何截取

在查询mysql数据内容的时候,经常会需要截图某个字段的字符串值,有的开发者会在查询完数据之后再截取,其实mysql数据库通过sql的函数就可以实现字符串的截取

首先新建一个用来测试的t_site表,然后随便插入两条数据

CREATE TABLE `t_site` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',

`app_id` varchar(32) DEFAULT NULL COMMENT '应用标识',

`domain` varchar(50) NOT NULL COMMENT '域名',

`site_path` varchar(20) NOT NULL COMMENT '路径',

`site_name` varchar(200) NOT NULL COMMENT '名称',

`short_name` varchar(20) NOT NULL COMMENT '简短名称',

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',

PRIMARY KEY (`id`),

UNIQUE KEY `app_id` (`app_id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='CMS站点表';

使用select * from t_site t;语句来查询下,看看测试数据内容

left(src, len) 从字符串左边开始截取,截图len长度字符串

right(src, len) 从字符串右边开始截取,截图len长度字符串

select left(t.site_name, 5) from t_site t;

select right(t.site_name, 8) from t_site t;

-- substring(str, pos); pos是截取的起点位置,如果pos是负数,则从右侧开始计算位置,和right函数效果差不多

select substring(t.site_name, 5) from t_site t;

select substring(t.site_name, -8) from t_site t;

-- substring(str, pos, len) 方法和上一步差不多,多了一个len,是截取的长度

select substring(t.site_name, 5, 6) from t_site t;

select substring(t.site_name, -8, 5) from t_site t;

-- 字符串截取:substring_index(str,delim,count)

-- 截取第3个 '_' 之前的所有字符

select substring_index(t.site_name, '_', 3) from t_site t;

-- 截取第2个 '_' (倒数)之后的所有字符

select substring_index(t.site_name, '_', -2) from t_site t;

-- 如果找不到指定的分割字符串,则返回全部

select substring_index(t.site_name, '_a', 1) from t_site t;