MySQL使用SUBSTRING_INDEX解析字符串时如何去除输出末尾空格
问题根因
你现在跑出来的结果带尾部空格,是因为源数据的格式本来就是「实际值 + 空格 + | + 空格 + 颜色字段」,SUBSTRING_INDEX在截取分隔符前的内容时,会把分隔符前面挨着的那个空格一并截进来,本身没有自动清除附带空白的能力。
修改后的查询语句
在原有的截取逻辑外面包一层TRIM()函数,把截出来的内容里附带着的首尾多余空格裁掉就行,直接可用的SQL如下:
TRIM(SUBSTRING_INDEX(`Name`, '|', 1)) AS `New Name`
实际效果
- 处理流程是先通过
SUBSTRING_INDEX拿到|前面的整段文本,再用TRIM()清除这段文本首尾附着的半角空格 - 对应你给的示例数据,最终输出的
New Name就是完全没有多余字符的AFBHY、GHYYU、GHYYL,和预期完全匹配 - 如果你的源数据里存在全角空格的特殊场景,可以用兼容版本,同时清除半角、全角的尾部空格:
TRIM(TRAILING ' ' FROM TRIM(TRAILING ' ' FROM SUBSTRING_INDEX(`Name`, '|', 1))) AS `New Name`
内容的提问来源于stack exchange,提问作者Chique_Code
相关产品推荐
相关产品推荐

