oracle - PLSQL 中是否允许使用 LPAD?
问题描述
我有一个 PL/SQL 脚本,其中有一个名为 v_credit_hours 的变量,它是一个数字数据类型。我从游标中获取我的字段并将它们插入到一个表中,其中 credit_hours 字段也是一个数字。我需要用前导零填充 v_credit_hours 并在插入之前以四位数结尾。所以 50 小时应该像 0050。我在插入语句之前有这一行。
v_credit_hours := LPAD(ROUND(v_credit_hours), 4, 0);
问题是它不会改变任何东西。50 仍然显示为 50。如果我将 4 更改为 10 或完全删除 LPAD,则不会发生任何事情。我尝试在 ROUND 内将 v_credit_hours 更改为 v_credit_hours * 8,这改变了结果。就好像 Oracle 只是忽略了 LPAD。这个查询结果很好,但当我使用 PL/SQL 时就不行了。我还尝试在 LPAD 和 ROUND 之间添加 TO_CHAR,但这没有任何作用。
SELECT LPAD(ROUND(50), 4, 0) FROM dual;
我不能以这种方式使用 LPAD 吗?我可以在我的原始光标中完成它,但我真的只想在最终输出中看到前导零。
解决方案
很难判断 v_credit_hours 是作为数字还是 Varchar 输入的。但是,如果你这样做,你会得到你想要的。
DECLARE
v_formatted_credit_hours varchar2(60);
BEGIN
SELECT lpad(round(50),4,0)
INTO v_formatted_credit_hours
FROM dual ;
SYS.dbms_output.put_line( v_formatted_credit_hours) ;
END;
希望这有助于对您的问题有所了解。
推荐阅读
- google-cloud-platform - 无法从 GCP 市场为计算引擎 (Velostrata) 配置 Migrate
- amazon-web-services - 如何使用 AccountB 的用户 CLI 凭证从 AccountA 访问 DynamoDB 表?
- api - 在 DialogFlow 中接收是和否的答案
- ms-access - 在 Access 中使用多个组合框作为查询条件不能一起使用,但使用一个组合框可以吗?如何使所有组合框工作?
- reactjs - TypeError:posts 是不可迭代的,从 firebase 返回数据
- python - 循环遍历字符串列表
- go - 无法从其他项目导入本地项目:找不到提供包的模块
- spring - Spring请求参数枚举验证
- javascript - 如何让nodejs等待用其他javascript文件编写的函数完成
- python - 抓取 google play 评论