1

这是我的查询:

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

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

据我了解,这意味着我只能在此列中有一个数字值,但是我想要空格。有人可以请给我一些指导吗?

4

7 回答 7

4

如果您想从查询中输出空格/空白,并且您使用的是 Oracle(正如您的 SQL Developer 参考建议的那样),那么您需要使用该NVL()函数TO_CHAR()

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

TO_CHAR()需要将 a 转换为NUMBERaVARCHAR2以使其与空白兼容(即某种字符值,可能存储为VARCHAR2内部)。这使您可以避免“无效号码”错误。

于 2012-05-22T05:59:22.890 回答
3

试试这个查询:

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

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

于 2012-05-22T05:31:47.397 回答
2

我会用

SELECT coalesce(Comm,'') FROM EMP WHERE comm IS NULL ORDER BY sal DESC
于 2012-05-22T05:32:16.087 回答
2
SELECT SUBJECT, DESCRIPTION, NVL(A.FILENAME,' ') AS FILENAME, 
            to_char(CREATEDATE, 'yyyy-mm-dd') AS CURRDATE, STATUS,  
            ASSIGNTO FROM RQST_DETAIL
于 2012-10-10T09:52:01.663 回答
1

使用以下查询

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

它将用空白的 comm 列替换空值

于 2013-12-05T07:35:05.867 回答
0

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

select isnull(cast(columnname as varchar(102)),'') as XYZ
于 2013-11-19T16:49:27.467 回答
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 函数用传递给它的第二个参数替换空值。

这里有空间。

SELECT ename, sal, NVL(TO_CHAR(comm),' ')
FROM EMP
WHERE comm IS NULL
ORDER BY sal DESC;
于 2012-05-22T05:57:13.360 回答