Datatypes

NULL 有類型嗎?

  • August 6, 2011

各種來源(例如WikipediaPSOUG)聲明 Oraclenull沒有類型。這是真的?

其他 RDBMS 呢?

甲骨文:

null文字沒有類型,但是

  1. null可以轉換為任何類型,這可能是必要的
  • 呼叫重載的過程或函式
  • 控制decode函式的返回類型,例如:
select decode('A','B',to_char(null),'A','1') from dual;
DECODE('A','B',TO_CHAR(NULL),'A','1')
-------------------------------------
1

select decode('A','B',to_number(null),'A','1') from dual;
DECODE('A','B',TO_NUMBER(NULL),'A','1')
--------------------------------------- 
                                      1
控制集合運算符的列類型,例如`union`當第一個查詢塊包含`null`
2. `null`儲存在數據庫中的值*總是*有一個類型:

create table t(n integer, s varchar(10)); insert into t values(null, null);

select decode(‘A’,‘B’,n,‘A’,‘1’) from t; DECODE(‘A’,‘B’,N,‘A’,‘1’)

                   1

select decode(‘A’,‘B’,s,‘A’,‘1’) from t; DECODE(‘A’,‘B’,S,‘A’,‘1’)

1

SQL Server,整數

SELECT NULL AS foo INTO dbo.bar
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'bar'
DROP TABLE dbo.bar

MySQL,二進制(0)

CREATE TABLE mydb.foo (select NULL AS bar);
EXPLAIN mydb.foo;
DROP TABLE mydb.foo;

引用自:https://dba.stackexchange.com/questions/4412