这是我的问题:
SELECT ename, sal, comm
FROM EMP
WHERE comm IS NULL
ORDER BY sal DESC;
我想用空格替换NULL
列中的comm
结果。我被告知在SELECT, write NULL(comm,' ')
下,但这会出现错误,说无效号码。如果我有NULL(comm, 0)
,则该查询有效,并在列中返回0。
根据我的理解,这意味着我只能在此列中有一个数字值,但我想要空白。有人能够给我一些指导吗?
答案 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