首页 > 解决方案 > 我可以在 Oracle SQL 中组合多列的一部分吗

问题描述

我是一名大学生,我正在使用 Oracle DB 开展一个项目。我想知道当我插入一行并将该列用作 PK 时,是否可以使列值显示为其他列的连接部分?

所以在这样的桌子上:

CREATE TABLE Cellphone (
    id          VARCHAR (8) PRIMARY KEY,
    maker       VARCHAR (20)   NOT NULL,
    range       VARCHAR (20)   NOT NULL,
    model       VARCHAR (10)   NOT NULL,
    ram         NUMBER (2)     NOT NULL,
    color       VARCHAR (5)    NOT NULL,
    quantity    NUMBER (3)     DEFAULT 0
);

因此,当我插入一行时,我希望将 id 自动设置为制造商的前 3 个字符、范围的前 3 个字符、模型的前 3 个字符、ram 和颜色的连接值。

例如 :

INSERT INTO Cellphone (id, maker, range, model, ram, color, quantity)
VALUES (*The code I am looking for*, "SAMSUNG", "GALAXY", "S10",32,"BLK",56);

id生成的是SAMGALS1032BLK.

有可能这样做吗?如果没有,是否有可能看起来像这样的东西,当我想显示表格时可能使用 SELECT 语句?

标签: sqloracle

解决方案


你可以试试这个:

CREATE TABLE Cellphone (
    id          AS (substr(maker,0,3)||substr(range,0,3)||model||ram||color) PRIMARY KEY,
    maker       VARCHAR (20)   NOT NULL,
    range       VARCHAR (20)   NOT NULL,
    model       VARCHAR (10)   NOT NULL,
    ram         NUMBER (2)     NOT NULL,
    color       VARCHAR (5)    NOT NULL,
    quantity    NUMBER (3)     DEFAULT 0
);

INSERT INTO Cellphone (maker, range, model, ram, color, quantity)
VALUES ('SAMSUNG', 'GALAXY', 'S10',32,'BLK',56);

select * from Cellphone;

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=954fb222fba8a2b49c3937c47e9f4726


推荐阅读