我是 Oracle 新手。我想为其中一条记录更新表中的布尔字段。这些陈述中哪一个是正确的?
update MyTable set myBooleanColumn = 1 where UserId= 'xx12345';
or
update MyTable set myBooleanColumn = '1' where UserId= 'xx12345';
任何帮助是极大的赞赏!!谢谢 !
我是 Oracle 新手。我想为其中一条记录更新表中的布尔字段。这些陈述中哪一个是正确的?
update MyTable set myBooleanColumn = 1 where UserId= 'xx12345';
or
update MyTable set myBooleanColumn = '1' where UserId= 'xx12345';
任何帮助是极大的赞赏!!谢谢 !
这取决于字段的定义方式。
如果它定义为 CHAR(1) 字段,那么您可以在其中存储“Y”/“N”或“T”/“F”。要更新该字段,您将使用引号,因为它是字符串文字。
UPDATE TestTable set myCharBooleanColumn = 'Y';
如果该字段定义为 NUMERIC,则约定为 0=false,1 或 -1 为 true(我都见过)。
UPDATE TestTable set myNumericBooleanColumn = 1;
许多人会提倡 CHAR(1) 方法,但在现实世界中 - 你会看到两者。这取决于布尔值的实现方式。
您可以在 Oracle 的数据类型文档中阅读更多内容 http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm
Oracle 中没有布尔字段之类的东西,因此您的字段要么是数字字段,要么是字符字段。如果是数字字段,则不需要引用数字;如果它是一个字符字段,你应该引用字符串。
您可以通过查询USER_TAB_COLUMNS找出列的类型:
select *
from user_tab_columns
where table_name = 'MYTABLE'
and column_name = 'MYBOOLEANCOLUMN'
或通过描述表格。
Oracle 中没有布尔字段。
您可以做的最好的事情是创建这样的表:-
create table ABC(bool char(1) check (bool in ('N','Y'));
然后简单的更新就像
UPDATE ABC set bool = 'Y';
为什么要使用 CHAR?
不支持BOOLEAN、BIT 或 TINYINT数据类型,因此char是最好的,因为它需要 1 个字节