在SQL(Oracle)中运行UPDATE查询后得到奇怪的输出。

时间:2013-04-26 22:03:50

标签: sql oracle oracle11g

Dept表如下:

DEPT

DEPT NO NOT  NULL NUMBER (2)

DNAME             VARCHAR(16)

LOC                VARCHAR(13)

PHONE              NUMBER(10)

我正在执行以下查询:

更新DEPT中的每一行以设置PHONE列的值。不要将手机留空。使用不同的手机 每个部门的数字。

所以上面的Phone列是上面查询的结果。我试图运行以下查询:

UPDATE DEPT
SET PHONE = 213-611-8209
WHERE DEPTNO = 10;

然而,当我在运行后检查内容时,SELECT *来自dept,我在电话栏下只看到“-8607”。为什么呢?

Que#2)我可以在一个查询中插入所有行的电话号码吗?

由于

1 个答案:

答案 0 :(得分:1)

由于PHONE列定义为NUMBER数据类型:213减去611减去8209 = -8607。

您需要将PHONE列定义为VARCHAR2(12 CHAR)并运行:

UPDATE DEPT
SET PHONE = '213-611-8209'
WHERE DEPTNO = 10;

或者将其保留为NUMBER数据类型并运行:

UPDATE DEPT
SET PHONE = 2136118209
WHERE DEPTNO = 10;

关于第二个问题,您可以在单个插入(或更新)声明中插入(或更新)电话号码吗?那取决于......这些电话号码存储在哪里?或者你只是随机生成每一行的电话号码?答案是肯定的 - 你可以,但是如何做到这一点取决于许多事情。