使用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

但你不能选择空。

例如

select first 1 current from systables

作品但

select first 1 null from systables

失败!

(不要让我开始为什么我不能只是做一个SQL Server,如“选择当前”没有指定的表!)

有帮助吗?

解决方案

此页面说你不能这样做的原因是因为“NULL”没有一个类型。因此,解决方法是创建一个存储过程,简单地在你想要的类型返回NULL。

这听起来像一个非常糟糕的解决方案,我虽然。也许你可以创建脚本变量,将其设置为空,然后选择变量,而不是?是这样的:

DEFINE dummy INT;
LET dummy = NULL;

SELECT group_ser, item_ser, dummy
FROM sometable

其他提示

您不必写一个存储过程;你只需要告诉IDS的NULL是什么类型。不使用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

或者您可以使用nvl(null,null)返回一个空的SELECT语句。

是否有任何理由去为实际的表?我已经使用

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;

这工作时,我想用空值的日期

可以使用SELECT列表上该表达式(“” 1),而不是空关键字。它的计算结果为类型DECIMAL的NULL值(2,0)。

此( '' 1.0001)的计算结果为DECIMAL(16,4)。等。

如果你想DATE类型使用DATE( '' + 1),以获得式DATE的空值。

( '' + 1)||” '的计算结果为类型的空字符串VARCHAR(1)。

要获得类型的NULL值VARCHAR(1)使用以下表达式: DATE( '' + 1)||” “

作品在9.x和11.x的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top