我的表中的列是空白的。奇怪的是它似乎不是null或空字符串。所以,如果我这样做:
SELECT *
FROM TABLE
WHERE column IS NULL
...或:
SELECT *
FROM TABLE
WHERE column = ''
我一无所获。想法?
答案 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