小编rod*_*063的帖子

Oracle - 为什么 CHAR 列自动添加前导零?

我正在使用 Oracle DB 11g

我有一个数据库表,其主键是 CHAR(4) - 尽管该列仅使用数字。

我注意到有些记录显示“0018”或“0123”。

我注意到很少有奇怪的事情并且需要一些帮助

- CHAR 列是否“自动”将零填充到某个值?

-我还注意到,在编写 SQL 时,如果我不在 where 子句中使用引号,它会返回结果,但如果我使用引号,它不会返回结果?例如

DB CHAR(4) 列的键为“0018”

我用这个查询

SELECT * FROM TABLE_A WHERE COLUMN_1=18;
Run Code Online (Sandbox Code Playgroud)

我按预期得到了行。

但是当我尝试以下操作时

SELECT * FROM TABLE_A WHERE COLUMN_1='18';
Run Code Online (Sandbox Code Playgroud)

这不起作用,但它又起作用了

SELECT * FROM TABLE_A WHERE COLUMN_1='0018';
Run Code Online (Sandbox Code Playgroud)

所以我有点困惑第一个查询如何在没有引号的情况下按预期工作?

sql oracle char oracle11g oracle-sqldeveloper

1
推荐指数
1
解决办法
243
查看次数

标签 统计

char ×1

oracle ×1

oracle-sqldeveloper ×1

oracle11g ×1

sql ×1