質問

のInformixを使用して、私はselect文から移入しようとしていますtemporyテーブルを作成しました。この後、私はtemporyテーブル内の複数のフィールドを埋めるために、更新をしたい。

だから私のようなものをやっている;

create temp table _results (group_ser int, item_ser int, restype char(4));

insert into _results (group_ser, item_ser)
select 
      group_ser, item_ser, null
from
      sometable

しかし、あなたはnullを選択することはできません。

select first 1 current from systables

作品が、

select first 1 null from systables

は失敗します!

(私はちょうど指定されていないテーブルで、「現在の選択」のようなSQL Serverを行うことができない理由を始めるないでください!)

役に立ちましたか?

解決

このページは、あなたがそれを行うことができない理由があると言いますので、「NULL」タイプを持っていません。だから、この問題を回避するには、単にあなたが欲しいタイプにNULLを返しますSPROCを作成することです。

それはしかし私にはかなり悪い解決策のように聞こえます。たぶん、あなたは代わりにその変数を選択し、これをnullに設定し、スクリプト内の変数を作成することができますか?このような何かます:

DEFINE dummy INT;
LET dummy = NULL;

SELECT group_ser, item_ser, dummy
FROM sometable

他のヒント

あなたはストアドプロシージャを記述する必要はありません。あなたは、単にNULLが何であるかの種類IDSを伝える必要があります。あなたが(任意のキャスト表記をサポートしていません)IDS 7.31を使用していないと仮定すると、あなたが書くことができます:

SELECT NULL::INTEGER FROM dual;

SELECT CAST(NULL AS INTEGER) FROM dual;

そして、あなたは(おそらくない)テーブルとしてdualを持っていない場合、あなたはいくつかのいずれかを行うことができます:

CREATE SYNONYM dual FOR sysmaster:"informix".sysdual;

「sysdual」テーブルは(IDS 11.10、IIRC)比較的最近追加されたので、あなたは、古いバージョンを使用している場合、それは存在しません。以下は、IDSのすべてのバージョンで動作します - それは私が使うものだ。

-- @(#)$Id: dual.sql,v 2.1 2004/11/01 18:16:32 jleffler Exp $
-- Create table DUAL - structurally equivalent to Oracle's similarly named table.
-- It contains one row of data.

CREATE TABLE dual
(
    dummy CHAR(1) DEFAULT 'x' NOT NULL CHECK (dummy = 'x') PRIMARY KEY
) EXTENT SIZE 8 NEXT SIZE 8;
INSERT INTO dual VALUES('x');

REVOKE ALL ON dual FROM PUBLIC;
GRANT SELECT ON dual TO PUBLIC;
あなたは、単一の行を取得するにはSYSTABLESから選択しようとしている場合は、

慣用的に、あなたは「WHERE tabid = 1」を含める必要があります。これはSYSTABLES自体のエントリであり、それが欠落している場合は、あなたのSELECTステートメントがデータを返さないという事実は、あなたの悩みの少なくともです。 (私も、エラーとしてこれを見たことがありません。)

SELECT group_ser, item_ser, replace(null,null) as my_null_column
FROM sometable

や、あなたのselect文にNULLを返すようにnvl(null,null)を使用することができます。

、実際のテーブルのために行く何らかの理由はありますか?私が使用してきました。

select blah from table(set{1})
select blah from table(set{1})

あなたが10.xのデータベースを使用している際にいいです。この文は、データベースには触れていません。読み取り/書き込み動作の量が0である、

が、

あなたが11.xのを使用しているとき、

それはあなたに、少なくとも4500バッファの費用がかかりますのInformixのこのバージョンは、メモリ内のこの表を作成し、それに対してクエリを実行しますので、読み込みます。

select to_date(null) from table;

私はヌル値で日付を取得したい場合は、この作品

あなたは代わりにNULLキーワードの、SELECTリストに(「1」)この式を使用することができます。これは、タイプDECIMAL(2,0)のNULL値に評価される。

この( '' 1.0001)はDECIMAL(16,4)と評価されます。そしてそうでます。

あなたはDATE型のnull値を取得するにはDATE型の使用DATE( '' + 1)の場合。

( '+ 1)||」 'タイプVARCHAR(1)の空の文字列に評価される。

型VARCHARのNULL値を得るために、(1)次の式を使用します。 DATE( '' + 1)||」 「

の9.xおよび11.xの中で動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top