这是我的查询:
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 转换为NUMBER
aVARCHAR2
以使其与空白兼容(即某种字符值,可能存储为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;