科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道教你快速掌握Informix SQL的11个使用技巧 (3)

教你快速掌握Informix SQL的11个使用技巧 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

回答: 有一个方法可以返回一个近似值,只需要在where后加上:AND rowid=(trunc(rowid/x)*x)

作者:ziyi 来源:赛迪网 2007年9月19日

关键字: SQL Informix OEMS MINUS

  • 评论
  • 分享微博
  • 分享邮件
 

回答: 有一个方法可以返回一个近似值,只需要在where后加上:AND rowid=(trunc(rowid/x)*x)

其中的x代表你想要返回的总的记录的1/x。需要说明的是,这种方法只能返回一个近似的值,并且表中的数据在物理上分布的连续性。

五、创建一个表结构和永久表完全一致的临时表。

例如:CREATE TEMP TABLE mytemp (prodno LIKE

product.prodno desc LIKE product.desc)

你可以使用如下的语句:

SELECT prodno, desc FROM product  

WHERE ROWID = -1  

INSERT INTO TEMP mytemp

六、更改serial类型下一次插入操作产生的值

我们知道serial类型的字段是系统自动增加的整数字段,那么怎样能控制下一个serial类型字段的值。想要下一个插入的serial类型的值比默认值大,可以用:

ALTER TABLE tabname MODIFY
( ser_col_name SERIAL([new_start_number])

想要下一个插入的serial类型的值比默认的值要小,首先需要将serial类型重新置为1:

INSERT INTO table (serial_column) VALUES (2147483647);  
INSERT INTO table (serial_column) VALUES (0); -- 重新从1开始!  
....然后执行ALTER TABLE(就像上面的做法一样)。

七、在发生错误的时候终止sql脚本的执行

如果你创建了一个sql脚本,并且在UNIX命令行中使用以下的方式来执行这个脚本:

$ dbaccess <脚本文件名>

这时,脚本中的所有的sql语句都会被执行,即使其中的一个sql语句发生了错误。例如,如果你脚本中为如下的语句:

BEGIN WORK;  

INSERT INTO history  

SELECT *  

FROM current  

WHERE month = 11;  

DELETE FROM current  

WHERE month = 11;  

COMMIT WORK;

如果INSERT语句失败了,DELETE语句仍旧会继续执行。直到commit work。这样的后果可能会很严重。你可以通过设置一个环境变量来防止这种情况的发生。 DBACCNOIGN=1

八、设置decimal字段运算结果的精度

假定你使用dbaccess或者isql,设置环境变量DBFLTMASK=6 就可以设置为小数点后面6位,比如:

CREATE TEMP TABLE t  

( col_a DECIMAL(8,4) NOT NULL,  

col_b DECIMAL(8,4) NOT NULL,  

col_c DECIMAL(8,4) NOT NULL  

);  

INSERT INTO t VALUES(1.2345, 3.4567, 5.6789);  

SELECT (col_a + col_b) / col_c AS value FROM t;  

value 0.826075  

如果DBFLTMASK=7 

value 0.8260755
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章