MySQL查询交换两字段顺序拼接为name列的实现方法
MySQL查询实现逗号分隔姓名顺序翻转
需求说明
现有存储格式为firstname,lastname的姓名数据,示例如下:
firstname1,lastname1 firstname2,lastname2 firstname3,lastname3 firstname4,lastname4
需要编写SELECT语句,将姓名顺序交换为lastname,firstname格式,返回列名为name的结果集,期望输出:
name lastname1,firstname1 lastname2,firstname2 lastname3,firstname3 lastname4,firstname4
实现方案
直接使用MySQL内置字符串函数处理即可,核心用到两个函数:
SUBSTRING_INDEX(str, delim, count):按指定分隔符拆分字符串,count为正数时取分隔符前第count段,为负数时取分隔符后倒数第count段CONCAT(str1, str2, ...):按顺序拼接多个字符串
假设原始姓名数据存储在表user_info的raw_name字段中,查询语句如下:
SELECT CONCAT( SUBSTRING_INDEX(raw_name, ',', -1), ',', SUBSTRING_INDEX(raw_name, ',', 1) ) AS name FROM user_info;
语句逻辑说明:
SUBSTRING_INDEX(raw_name, ',', -1)提取逗号后半段的lastname内容SUBSTRING_INDEX(raw_name, ',', 1)提取逗号前半段的firstname内容- 将lastname、逗号、firstname按顺序拼接,别名设置为要求的
name即可得到目标结果
内容的提问来源于stack exchange,提问作者Nivethitha Thiyagarajan
相关产品推荐
相关产品推荐

