如何在 Oracle SQL 数据库中创建一个布尔值的新列,如果另一列中的字符串条目包含"100g"请输入 1。否则,输入 0



我在Oracle云中的一个自动化数据库中的SQL中有一个大表。我创建了另一个名为portion_size的列。我想创建一个扫描描述的脚本,如果它包含";100g";,我想在portion_size列中加一个1。否则,我想放一个0。我想我需要对CONTAINS命令和CASE命令做些什么。不过,我不知道如何把这一切组合在一起。我是SQL的新手。

这是我正在工作的桌子。

我该怎么写?

提前非常感谢。

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

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

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

有关更多详细信息,请参阅DBfiddle。

我相信这解决了问题。

UPDATE NUTRITION
SET PORTION_SIZE = (CASE WHEN LOWER(DESCRIPTION) LIKE '%100g%' THEN 1 ELSE 0 
END);

相关内容

最新更新