这是我的查询:
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。
据我了解,这意味着我只能在此列中有一个数字值,但是我想要空格。有人可以请给我一些指导吗?
这是我的查询:
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。
据我了解,这意味着我只能在此列中有一个数字值,但是我想要空格。有人可以请给我一些指导吗?
如果您想从查询中输出空格/空白,并且您使用的是 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内部)。这使您可以避免“无效号码”错误。
试试这个查询:
UPDATE EMP SET `ename`='' WHERE `ename` IS NULL
而且我认为,您已经对表中的每一列重复此查询。
我会用
SELECT coalesce(Comm,'') FROM EMP WHERE comm IS NULL ORDER BY sal DESC
SELECT SUBJECT, DESCRIPTION, NVL(A.FILENAME,' ') AS FILENAME,
to_char(CREATEDATE, 'yyyy-mm-dd') AS CURRDATE, STATUS,
ASSIGNTO FROM RQST_DETAIL
使用以下查询
select ename, ISNULL(comm ,' ') AS comm ,sal from EMP ORDER BY sal desc
它将用空白的 comm 列替换空值
如果列不是字符串,您可以先转换它,然后使用 isnull
select isnull(cast(columnname as varchar(102)),'') as XYZ
为了将来参考,运行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;