Oracle 10g:列为空,但不为null或为空字符串

时间:2011-01-25 16:48:13

标签: sql oracle

我的表中的列是空白的。奇怪的是它似乎不是null或空字符串。所以,如果我这样做:

SELECT * 
  FROM TABLE 
 WHERE column IS NULL

...或:

SELECT * 
  FROM TABLE 
 WHERE column = ''

我一无所获。想法?

5 个答案:

答案 0 :(得分:16)

发出此查询:

SELECT column, DUMP(column, 1016)
FROM table

它会显示确切的内容。

相关:Oracle不允许空字符串;他们默默地转换为NULL

答案 1 :(得分:15)

也许该列只包含空格?

你试过吗

select * 
from table 
where trim(column) is null

答案 2 :(得分:3)

Oracle基本上是一个永久的烦恼,空字符串被视为null。但是,你确定这是一个空字符串吗?它可能是一个不可见的字符,例如空格或制表符/换行符/换行符等等......当你select length(column) from table时字符串长度显示什么?

答案 3 :(得分:1)

试试这个:

SELECT *    
  FROM TABLE   
 WHERE TRIM(column) IS NULL

答案 4 :(得分:1)

如果您的列不是VARCHAR2而是CHAR(N),则会填充插入空字符串。见what Tom Kyte tells about this