×

informix函数

informix函数(informix 函数)

admin admin 发表于2023-04-11 01:28:09 浏览74 评论0

抢沙发发表评论

本文目录一览:

informix 自定义函数 可以返回表吗

用存储过程算了,函数不能返回一个值,如果要返回多值的话,那就返回一个table,用存储过程同样能达到效果 CREATE PROCEDURE `goodcheck`( in xxx int in xxx out xxx .. out xxx char ) begin select sum(productstockinfo.num) into produc.

Informix数据库环境有个函数rfmtdate()函数把DATE值转换为一个字符串,关于这个函数问下。

应该是报错的 ,-1不是一个日期型的数据类型 日期型的数据 初始化应该是: 01/01/1900

这个函数是格式化字符串 将Date类型的数据格式化为字符串 如:

第一个参数可以是从数据中搜索出的一个日期型的字段,假设 DATE为 : 12/31/2013

main()

{

char sYear[4];

memset (sYear, '\0' ,sizeof(sYear));

rfmtdate(DATE,'YYYY’,sYear);

}

这样 sYear中就保存了DATE中‘年’的字符串类型值

如何在Informix中创建并使用函数索引

设置以下环境变量:

INFORMIXDIR the location of your IDS installation

PATH add $INFORMIXDIR/bin

add $INFORMIXDIR/extend/spatialDataBladeDir/bin (see below)

安装Spatial DataBlade。安装指导可从 IDS 11.10 信息中心获得(参考本文末尾的链接)。

下面的指令假设您已经在默认位置安装好了 Spatial DataBlade version 8.21: $INFORMIXDIR/extend/spatial.8.21.xC1,其中 ‘x’ 表示特定于平台的字母。对于 64 位 Linux x86,默认位置为 $INFORMIXDIR/extend/spatial.8.21.FC1。可根据您的环境对指令作出相应修改。-informix函数

为空间数据创建 sbspace。注意:sbspace 名必须与 ONCONFIG 文件中的 SYSSBSPACENAME 值匹配。本例假设 sbspace 名为 syssbspace。

在与根dbspace相同的目录中创建名为 syssbspace 的空文件(ONCONFIG 文件中 ROOTPATH 的值指定根dbspace的名称和位置)。

将文件所有权改为informix:informix。

将文件权限改为mode 660。

以用户informix的身份,创建sbspace:

onspaces -c -S syssbspace -p fullpath/syssbspace -o 0 -s 100000

创建您的数据库。

dbaccess - -

create database spatialdb;

注册 Spatial DataBlade。

使用 blademgr 实用工具注册 Spatial DataBlade。Spatial DataBlade 依赖于 R-Tree DataBlade,后者由 IDS 自动附带。因此,必须同时向您的数据库注册这两个 DataBlade。-informix函数

blademgr

register ifxrltree.2.00 spatialdb

register spatial.8.21.FC1 spatialdb

list spatialdb

DataBlade modules registered in database spatialdb:

ifxrltree.2.00 spatial.8.21.FC1

加载空间数据。

从City Limits 2007和Tsunami Inundation Line下载中提取文件,并分别保存在两个目录中,即citylim_2007和tsunami: -informix函数

ls citylim_2007

citylim_2007.dbf

citylim_2007.prj

citylim_2007.sbn

citylim_2007.sbx

citylim_2007.shp

citylim_2007.shp.xml

citylim_2007.shx

ls tsunami

PRJdevelopment.pdf

tsunami.dbf

tsunami.html

tsunami.pdf

tsunami.prj

tsunami.shp

tsunami.shp.xml

tsunami.shx

informix里的日期函数

我也在夜晚飞。不让人看见

公正的 中午 在那里用火焰织成

我看到每根枞针上

在跳跃的风里

舞着,舞着跟你道别。睡眠时

他愿是那山中的杜鹃哈哈

informix返回某字符的位置的函数

如下: 函数名: strstr 功能: 在字符串中查找指定字符串的第一次出现 用法: char *strstr(char *str1, char *str2); strstr原型:extern char *strstr(char *haystack, char *needle); 头文件:#include string.h 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 编辑本段函数原型 1.Copyright 1990 Software Development Systems, Inc. char *strstr( const char *s1, const char *s2 ) { int len2; if ( !(len2 = strlen(s2)) ) return (char *)s1; for ( ; *s1; ++s1 ) { if ( *s1 == *s2 strncmp( s1, s2, len2 )==0 ) return (char *)s1; } return NULL; } 2.Copyright 1986 - 1999 IAR Systems. All rights reserved char *strstr(const char *s1, const char *s2) { int n; if (*s2) { while (*s1) { for (n=0; *(s1 + n) == *(s2 + n); n++) { if (!*(s2 + n + 1)) return (char *)s1; } s1++; } return NULL; } else return (char *)s1; } 编辑本段举例 // strstr.c #include syslib.h #include string.h main() { char *s="Golden Global View"; char *l="lob"; char *p; clrscr(); p=strstr(s,l); if(p) printf("%s",p); else printf("Not Found!"); getchar(); return 0; } 语法:* strstr(str1,str2) str1: 被查找目标 string expression to search. str2:要查找对象 The string expression to find. 该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0. 例子: 功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy” (假设xxx和yyy都是一个未知的字串) char *s=” string1 onexxx string2 oneyyy”; char *p; p=strstr(s,”string2”); if(p==NULL) printf(“Not Found!”); p=strstr(p,”one”); if(p==NULL) printf(“Not Found!”); p+=strlen(“one”); printf(“%s”,p); 说明:如果直接写语句p=strstr(s,”one”),则找到的是onexxx string2 oneyyy,不符合要求 所以需采用二次查找法找到目标-informix函数

很急!有没有知道informix中row_number over 函数怎么用啊?

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). -informix函数

与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.

row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序).

rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).

dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的 .

lag(arg1,arg2,arg3):

arg1是从其他行返回的表达式

arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,时一个往回检索以前的行的数目。

arg3是在arg2表示的数目超出了分组的范围时返回的值。

看几个SQL语句:

语句一:

select row_number() over(order by sale/cnt desc) as sort, sale/cnt

from (

select -60 as sale,3 as cnt from dual union

select 24 as sale,6 as cnt from dual union

select 50 as sale,5 as cnt from dual union

select -20 as sale,2 as cnt from dual union

select 40 as sale,8 as cnt from dual);

执行结果:

SORT SALE/CNT

---------- ----------

1 10

2 5

3 4

4 -10

5 -20

语句二:查询员工的工资,按部门排序

select ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order from scott.emp;-informix函数

执行结果:

ENAME SAL SAL_ORDER

-------------------- ---------- ----------

KING 5000 1

CLARK 2450 2

MILLER 1300 3

SCOTT 3000 1

FORD 3000 2

JONES 2975 3

ADAMS 1100 4

SMITH 800 5

BLAKE 2850 1

ALLEN 1600 2

TURNER 1500 3

WARD 1250 4

MARTIN 1250 5

JAMES 950 6

已选择14行。

语句三:查询每个部门的最高工资

select deptno,ename,sal from

(select deptno,ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order -informix函数

from scott.emp) where sal_order 2;

执行结果:

DEPTNO ENAME SAL

---------- -------------------- ----------

10 KING 5000

20 SCOTT 3000

30 BLAKE 2850

已选择3行。

语句四:

select deptno,sal,rank() over (partition by deptno order by sal) as rank_order from scott.emp order by deptno;-informix函数

执行结果:

DEPTNO SAL RANK_ORDER

---------- ---------- ----------

10 1300 1

10 2450 2

10 5000 3

20 800 1

20 1100 2

20 2975 3

20 3000 4

20 3000 4

30 950 1

30 1250 2

30 1250 2

30 1500 4

30 1600 5

30 2850 6

已选择14行。

语句五:

select deptno,sal,dense_rank() over(partition by deptno order by sal) as dense_rank_order from scott.emp order by deptn; -informix函数

执行结果:

DEPTNO SAL DENSE_RANK_ORDER

---------- ---------- ----------------

10 1300 1

10 2450 2

10 5000 3

20 800 1

20 1100 2

20 2975 3

20 3000 4

20 3000 4

30 950 1

30 1250 2

30 1250 2

30 1500 3

30 1600 4

30 2850 5

已选择14行。