首页 > 解决方案 > 如何在 Oracle SQL 数据库中创建一个布尔值的新列,如果另一列中的字符串条目包含“100g”,则输入 1。否则,输入 0

问题描述

我在 Oracle Cloud 的自动化数据库中的 SQL 中有这个大表。我创建了另一个名为 part_size 的列。我想创建一个扫描描述的脚本,如果它包含“100g”,我想在part_size 列中放置一个1。否则,我想输入一个 0。我想我需要对 CONTAINS 命令和 CASE 命令做一些事情。我不知道如何把它们放在一起。我是 SQL 新手。

这是我正在使用的表。

我怎么写这个?

提前非常感谢。

标签: sqldatabaseoracledatatables

解决方案


如果您的 Oracle 版本允许,请考虑为此使用虚拟列(此处的示例)。一旦这到位,您不需要在每次向表中插入新行时都进行更新(或者:在插入之前计算 part_size 列的值)。

您可以使用 ALTER TABLE ... 将虚拟列添加到现有表中。

alter table vcdemo2
add portion_size number as (
    CASE WHEN LOWER(DESCRIPTION) LIKE '%100g%' THEN 1 ELSE 0 END
) virtual ;

有关详细信息,请参阅DBfiddle


推荐阅读