SQL查询 - 如何删除null并替换为空白

时间:2012-05-22 05:29:00

标签: sql

这是我的问题:

SELECT ename, sal, comm
FROM EMP
WHERE comm IS NULL
ORDER BY sal DESC;

我想用空格替换NULL列中的comm结果。我被告知在SELECT, write NULL(comm,' ')下,但这会出现错误,说无效号码。如果我有NULL(comm, 0),则该查询有效,并在列中返回0。

根据我的理解,这意味着我只能在此列中有一个数字值,但我想要空白。有人能够给我一些指导吗?

7 个答案:

答案 0 :(得分:4)

如果要从查询中输出空格/空白,并且如果您使用的是Oracle(作为SQL Developer参考建议),那么您需要将NVL()函数与TO_CHAR()一起使用:< / p>

SELECT ename, sal, NVL( TO_CHAR(comm), ' ' ) comm
FROM   EMP
WHERE  comm IS NULL
ORDER  BY sal DESC;

需要TO_CHAR()才能将NUMBER转换为VARCHAR2以使其与空白(这是某种字符值,可能存储为VARCHAR2内部)。这样可以避免“无效数字”错误。

答案 1 :(得分:3)

尝试此查询:

UPDATE EMP SET `ename`='' WHERE `ename` IS NULL

我认为,您已对表格中的每一列重复此查询。

答案 2 :(得分:2)

我会用

SELECT coalesce(Comm,'') FROM EMP WHERE comm IS NULL ORDER BY sal DESC

答案 3 :(得分:2)

SELECT SUBJECT, DESCRIPTION, NVL(A.FILENAME,' ') AS FILENAME, 
            to_char(CREATEDATE, 'yyyy-mm-dd') AS CURRDATE, STATUS,  
            ASSIGNTO FROM RQST_DETAIL

答案 4 :(得分:1)

使用以下查询

选择ename,ISNULL(comm,'')AS comm,sal from EMP ORDER BY sal desc

它将使用comm列的空白

替换空值

答案 5 :(得分:0)

为了将来参考,请运行DESCRIBE EMP并将结果发布到问题中。在您运行的查询的结果输出中,按CTRL-A CTRL-SHIFT-C并将其粘贴到问题中。这将更好地描绘您所取得的成就以及您希望如何改变。

最后,您可以运行以下SQL来验证您正在运行的Oracle版本

select * from v$version 

你应该看到类似的东西

BANNER
Personal Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE   11.2.0.1.0  Production"
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

如果这不起作用,则SQL Developer可能无法连接到Oracle DB。开箱即用的SQL Developer只连接到Oracle DB和MS Access ??

最后回答你的实际问题,NVL函数用传递给它的第二个参数替换null vales。

这是一个空间。

SELECT ename, sal, NVL(TO_CHAR(comm),' ')
FROM EMP
WHERE comm IS NULL
ORDER BY sal DESC;

答案 6 :(得分:0)

如果列不是字符串,您可以先将其强制转换然后使用isnull

select isnull(cast(columnname as varchar(102)),'') as XYZ