1

これが私のクエリです:

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

NULL列の結果をcomm空白に置き換えたいです。私は下に言われましたが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;

は、aを aTO_CHAR()に変換して、空白と互換性を持たせるために必要です(これは、おそらく内部的に保存されているある種の文字値です)。これにより、「無効な番号」エラーを回避できます。NUMBERVARCHAR2VARCHAR2

于 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

null値をcomm列の空白に置き換えます

于 2013-12-05T07:35:05.867 に答える
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 値を渡された 2 番目のパラメーターに置き換えます。

ここはスペース。

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