Oracle SQL中拆分与转换字符串值的最佳方法是什么
错误写法问题说明
你之前的代码存在两个核心语法错误:
- Oracle 内置的
CONCAT函数仅支持接收2个参数做拼接,你传入了多个参数会直接抛出语法异常 SUBSTR函数的调用规则为SUBSTR(目标字符串, 起始下标, 截取长度),你把截取逻辑和拼接参数混写,参数顺序完全不符合要求
正确实现方案
你的转换逻辑可以拆解为:取原字符串第4到第6位的内容,拼接横杠后再拼接原字符串前3位的内容,直接用Oracle的字符串拼接符||实现即可,语法最简洁可读性最高:
SUBSTR(你的字段名, 4, 3) || '-' || SUBSTR(你的字段名, 1, 3) AS overview
如果必须用CONCAT函数实现,需要嵌套调用:
CONCAT(CONCAT(SUBSTR(你的字段名, 4, 3), '-'), SUBSTR(你的字段名, 1, 3)) AS overview
验证结果
用你给出的示例值LDABLD6A测试:
SUBSTR('LDABLD6A', 4, 3)输出结果为BLDSUBSTR('LDABLD6A', 1, 3)输出结果为LDA- 拼接后最终结果为
BLD-LDA,完全匹配需求
注意:你示例代码中用到的
TABLE是Oracle保留关键字,如果你的字段名确实为这个,使用时需要加双引号包裹为"TABLE",否则会触发关键字识别报错。
内容的提问来源于stack exchange,提问作者Nicolai Olsen
相关产品推荐
相关产品推荐

