2013-10-17 50 views
2

我是新手Oracle用戶。我想更新我的表格中的布爾字段作爲記錄之一。哪一個陳述是正確的?如何更新Oracle表中的布爾型字段

update MyTable set myBooleanColumn = 1 where UserId= 'xx12345'; 

or 


update MyTable set myBooleanColumn = '1' where UserId= 'xx12345'; 

任何幫助非常感謝!謝謝 !

+2

有沒有這樣的事情作爲Oracle表的布爾數據類型。您必須執行以下兩個選項之一 - 創建varchar2(1)的字段,並設置爲Y/N或數字字段,並將其設置爲1/0 – OldProgrammer

回答

7

這取決於字段是如何定義的支持。

如果將其定義爲CHAR(1)字段,則可以在其中存儲'Y'/'N'或'T'/'F'。要更新字段,您將使用引號,因爲它將是一個字符串文字。

UPDATE TestTable set myCharBooleanColumn = 'Y'; 

如果該字段被定義爲NUMERIC,則約定是0 =假,1或-1爲真(我看到兩者)。

UPDATE TestTable set myNumericBooleanColumn = 1; 

很多人會主張CHAR(1)的方式,但在現實世界 - 你看這兩個。這取決於如何實現布爾值。

你可以閱讀更多在甲骨文的文檔上的數據類型 http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm

4

Oracle中沒有這樣的布爾字段,所以你的字段是數字字段或字符字段。如果它是數字字段,則不需要引用該數字;如果它是字符字段,則應引用該字符串。

您可以通過查詢USER_TAB_COLUMNS找出列的類型:

select * 
    from user_tab_columns 
where table_name = 'MYTABLE' 
    and column_name = 'MYBOOLEANCOLUMN' 

describing表。

1

在Oracle中沒有什麼是布爾型的字段。

最好的你可以做的是創建該表是這樣的: -

create table ABC(bool char(1) check (bool in ('N','Y')); 

然後簡單的更新一樣

UPDATE ABC set bool = 'Y'; 

爲什麼TAKING CHAR?

沒有爲布爾值,位或TINYINT數據類型,因此焦炭將是最好的,因爲它需要1個字節

相關問題