Datatypes
NULL 有類型嗎?
各種來源(例如Wikipedia、PSOUG)聲明 Oracle
null
沒有類型。這是真的?其他 RDBMS 呢?
甲骨文:
null
文字沒有類型,但是
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;