sql - 插入行时有没有办法避免“此处不允许列”错误
问题描述
所以我正在制作一个表格,在这种情况下生成收据编号:
- 如果账户类型是 Home Loan,前 2 个字母应该是“HL”,如果是学生贷款,前 2 个字母应该是“SL”
- 接下来的 2 个字母应该来自姓氏,并用左边的 0 填充这是我的代码和错误,每当我插入行时:
insert into processedaccounts
values (30, (substr(accounttype,1,2) || (lastname,1,2) || RPAD(receiptnumber_seq.nextval9,'0')), 'Metropolis', 'Home Loan', 'Adam', 'Smith');
错误报告 - SQL ERROR: ORA-00984: column not allowed here
- 00000 - “此处不允许列”
我应该如何修改我的查询以避免“此处不允许列”错误
解决方案
在您的查询中:
- 帐户类型的 substr 函数错误,您应该获取第一个字符和空格后的第一个字符
- RPAD 功能错误
- 没有姓氏的 substr 函数
- 缺少参考表
- 应从参考表中选择值
我已更正它们,这是最终查询,根据您的要求更改表名和列名
insert into processedaccounts
select requestid,
substr(account_type,1,1)||SUBSTR(account_type, Instr(account_type, ' ', 1, 1) +1,1) || substr(lastname,1,2) || RPAD(receiptnumber2.nextval,9,0) ,
city,
account_type,
firstname,
lastname
from request_accounts
where request_accounts.requestid = 30;
推荐阅读
- python - 将从 SFTP 下载的文件的编码从 UTF-16 更改为 UTF-16
- python - Python3.7 mlpy 安装错误 - 'PyThreadState {aka struct _ts}' 没有名为 'exc_type' 的成员
- iis - IIS 上的 Cosmos DB 模拟器
- javascript - Javascript 'arr [index]' 返回整个数组而不是单个值
- laravel - 在laravel中发送邮件-不显示错误并且不发送电子邮件
- sql - 有什么方法可以针对两种不同的条件进行不同的选择查询吗?
- javascript - RecordRTC.js - 使用麦克风和扬声器录制屏幕(虚拟输出) - windows + chrome
- java - Groovy Mockito NullPointerException
- sqlite - 通过将持续时间添加到 SQLite 数据库中的开始日期来更新结束日期
- asp.net - ASP.NET - 将 id 路由到页面但在页面中为空