Oracle拼接字段时,含字符类型拼接会多出空格?
1.问题
如下图所示,当我们在Oracle中使用||拼接字段时,若含字符char类型,会多出一些奇怪的空格,原因和如何解决呢?
SELECT VEND_NAME || '(' || VEND_COUNTRY || ')'
FROM VENDORS
ORDER BY VEND_NAME;
2.解决
出现这种情况的主要是因为变量的类型为char,因为char类型为固定长度,如果给变量赋值的长度小于声明的长度,Oracle会自动在字符串后面填充空格。
解决方法就是将变量的声明类型改为varchar,这种类型不会填充空格。 最好保持存储过程参数的类型和调用时声明变量的类型一样。
参考:Oracle存储过程中,字符串连接单引号后字符串里出现空格
这里的问题就出在VEND_NAME 和 VEND_COUNTRY 两个变量都是char类型,但是实际的字符长度又不是固定的
那应该如何处理?使用TRIM函数即可!
SELECT TRIM(VEND_NAME) || '(' || TRIM(VEND_COUNTRY) || ')'
FROM VENDORS
ORDER BY VEND_NAME;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了