informix数据抽取到mysql_Informix SQL函数的详细用法

本文详细介绍了Informix SQL函数的使用,包括内部函数如合计函数、日期时间函数、代数和统计函数等,以及IDS特有的数据库信息函数。内容涵盖了函数的用法、示例和在数据处理中的应用。
摘要由CSDN通过智能技术生成

Informix SQL函数的详细用法

a4c26d1e5885305701be709a3d33442f.png

(2012-04-25 12:42:09)

标签:

informix

sql函数

杂谈

Informix SQL函数的详细用法

一、内部函数

1、内部合计函数

1)COUNT(*)          返回行数

2)COUNT(DISTINCT COLNAME)   返回指定列中唯一值的个数

3)SUM(COLNAME/EXPRESSION)   返回指定列或表达式的数值和;

4)SUM(DISTINCT COLNAME)    返回指定列中唯一值的和

5)AVG(COLNAME/EXPRESSION)   返回指定列或表达式中的数值平均值

6)AVG(DISTINCT COLNAME)    返回指定列中唯一值的平均值

7)MIN(COLNAME/EXPRESSION)   返回指定列或表达式中的数值最小值

8)MAX(COLNAME/EXPRESSION)   返回指定列或表达式中的数值最大值

2、日期与时间函数

1)DAY(DATE/DATETIME EXPRESSION)   返回指定表达式中的当月几号

2)MONTH(DATE/DATETIME EXPRESSION)  返回指定表达式中的月份

3)YEAR(DATE/DATETIME EXPRESSION)   返回指定表达式中的年份

4)WEEKDAY(DATE/DATETIME EXPRESSION) 返回指定表达式中的当周星期几

5)DATE(NOT DATE EXPRESSION)     返回指定表达式代表的日期值

6)TODAY                返回当前日期的日期值

7)CURRENT[first to last]        返回当前日期的日期时间值

8)COLNAME/EXPRESSION UNITS PRECISION  返回指定精度的指定单位数

9)MDY(MONTH,DAY,YEAR)       返回标识指定年、月、日的日期值

10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST

返回表达式代表的日期时间值

11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST

返回表达式代表的时间间隔值

12)EXTEND(DATE/DATETIME EXPRESSION,[first to

last])返回经过调整的日期或日期时间值

例子1、和UNITS合用,指定日期或时间单位(year,month,day,hour,minute,seond,fraction):

let tmp_date = today + 3 UNITS day

例子2、let tmp_date = MDY(10,30,2002)  -- 2002-10-30

例子3、let tmp_date = today + interval(7) day to

day --当前时间加上7天;

注:该功能与1相似;

例子4、EXTEND转换日期或日期时间值

let tmp_inthour = extend(datetime1,hour to hour)

3、代数函数

1)ABS(COLNAME/EXPRESSION):       取绝对值

2)MOD(COLNAME/EXPRESSION,DIVISOR)  返回除以除数后的模(余数)

3)POW(COLNAME/EXPRESSION,EXPONENT)  返回一个值的指数冥

例子:let tmp_float = pow(2,3) --8.00000000

4)ROOT(COLNAME/EXPRESSION,[index])  返回指定列或表达式的根值

5)SQRT(COLNAME/EXPRESSION)      返回指定列或表达式的平方根值

6)ROUND(COLNAME/EXPRESSION,[factor]) 返回指定列或表达式的圆整化值

7)TRUNC(COLNAME/EXPRESSION,[factor]) 返回指定列或表达式的截尾值

说明:上两者中FACTOR指定小数位数,若不指定,则为0;若为负数,则整化到小数点左边;

注:ROUND是在指定位上进行4舍5入;TRUNC是在指定位上直接截断;

let tmp_float = round(4.555,2) --4.56

let tmp_float = trunc(4.555,2) --4.55

4、指数与对数函数

1)EXP(COLNAME/EXPRESSION)    返回指定列或表达式的指数值

2)LOGN(COLNAME/EXPRESSION)    返回指定列或表达式的自然对数值

3)LOG10(COLNAME/EXPRESSION)   返回指定列或表达式的底数位10的对数值

5、三角函数

1)COS(RADIAN EXPRESSION)     返回指定弧度表达式的余弦值

2)SIN(RADIAN EXPRESSION)     正弦

3)TAN(RADIAN EXPRESSION)     正切

4)ACOS(RADIAN EXPRESSION)     反余弦

5)ASIN(RADIAN EXPRESSION)     反正弦

6)ATAN(RADIAN EXPRESSION)     反正切

7)ATAN2(X,Y)           返回坐标(X,Y)的极坐标角度组件

6、统计函数

1)RANGE(COLNAME)    返回指定列的最大值与最小值之差 =

MAX(COLNAME)-MIN(COLNAME)

2)VARIANCE(COLNAME)  返回指定列的样本方差;

3)STDEV(COLNAME)    返回指定列的标准偏差;

7、其他函数

1)USER              返回当前用户名

2)HEX(COLNAME/EXPRESSION)    返回指定列或表达式的十六进制值

3)LENGTH(COLNAME/EXPRESSION)  返回指定字符列或表达式的长度

4)TRIM(COLNAME/EXPRESSION)   删除指定列或表达式前后的字符

5)COLNAME/EXPRESSION || COLNAME/EXPRESSION 返回并在一起的字符;

二、IDS内部函数

1、DBSERVERNAME   返回数据库服务器名 let tmp_char=DBSERVERNAME

2、SITENAME     返回数据库服务器名 let tmp_char=SITENAME

说明:两者功能相同;

3、DBINFO(‘SPECIAL_KEYWORD')   返回只关键字值

例子1:返回数据中每个表的DBSPACE名称

select dbinfo('dbspace',partnum),tabname from systables

where tabid>99 and tabtype='T' (OK)

例子2:返回任何表中插入的最后一个SERIAL值

select dbinfo('sqlca.sqlerrd1') from systables where tabid =

1

例子3:返回最后一个SELECT,INSERT,UPDATE,DELETE或EXECUTE

PROCEDURE语句处理的行数;

select dbinfo('sqlca.sqlerrd2') from systables where

tabid=1;

字符串函数和操作符

本节描述了用于检查和操作字符串数值的函数和操作符. 在这个环境中的字串包括所有类型 character, character

varying,和 text 的值.除非另外说明,所有下面列出的函数都可以处理这些类型, 不过要小心的是,在使用 character

类型的时候, 它的自动填充的潜在影响.通常这里描述的函数也能用于非字串 类型,我们只要先把那些数据转化为字串表现形式就可以了。

有些函数还可以处理位串类型.

SQL 定义了一些字串函数, 它们有指定的语法,它们里面是用 某种特定的关键字,而不是逗号来分隔参数. 详情请见Table 9-6,

这些函数也用正常的函数调用说法实现了. (参阅 Table 9-7.)

Table 9-6. SQL 字串函数和操作符

函数 返回类型 描述 例子 结果

string || string text 字串连接 'Post' || 'greSQL' PostgreSQL

bit_length(string) integer 字串里二进制位的个数 bit_length('jose') 32

char_length(string) 或 character_length(string) integer 字串中的字符个数

char_length('jose') 4

convert(string using conversion_name) text 使用指定的转换名字改变编码。转换可以通过

CREATE CONVERSION 定义。当然系统里有一些预定义的转换名字。参阅 Table 9-8 获取可用的转换名。

convert('PostgreSQL' using iso_8859_1_to_utf_8) Unicode (UTF-8)

编码的'PostgreSQL'

lower(string) text 把字串转化为小写 lower('TOM') tom

octet_length(string) integer 字串中的字节数 octet_length('jose') 4

position(substring in string) integer 声明的子字串的位置 position('om' in

'Thomas') 3

overlay(string placing string from integer [for integer]) text

替换子字串 overlay('Txxxxas' placing 'hom' from 2 for 4) Thomas

position(substring in string) integer 指定的子字串的位置 position('om' in

'Thomas') 3

substring(string [from integer] [for integer]) text 抽取子字串

substring('Thomas' from 2 for 3) hom

substring(string from pattern) text 抽取匹配 POSIX 正则表达式的子字串

substring('Thomas' from '...$') mas

substring(string from pattern for escape) text 抽取匹配SQL正则表达式的子字串

substring('Thomas' from '%#"o_a#"_' for '#') oma

trim([leading | trailing | both] [characters] from string) text 从字串

string 的 开头/结尾/两边/ 删除只包含 characters (缺省是一个空白)的最长的字串. trim(both 'x'

from 'xTomxx') Tom

upper(string) text 把字串转化为大写. upper('tom') TOM

还有额外的字串操作函数可以用,它们在Table 9-7列出. 它们有些在内部用于实现Table

9-6列出的SQL标准字串函数.

Table 9-7. 其他字串函数

函数 返回类型 描述 例子 结果

ascii(text) integer 参数第一个字符的 ASCII 码 ascii('x') 120

btrim(string text, characters text) text 从 string 开头和结尾删除 只包含在

characters 里的字符的最长字串. btrim('xyxtrimyyx','xy') trim

chr(integer) text 给出 ASCII 码的字符 chr(65) A

convert(string text, [src_encoding name,] dest_encoding name) text

把字串转换为 dest_encoding . 原来的编码是用 src_encoding 声明的. 如果省略了

src_encoding, 则假设为数据库编码. convert('text_in_unicode', 'UNICODE',

'LATIN1') 以 ISO 8859-1 编码表示的text_in_unicode

decode(string text, type text) bytea 把早先用encode编码的,存放在 string

里面的二进制数据解码。 参数类型和encode一样。 decode('MTIzAAE=', 'base64')

123\000\001

encode(data bytea, type text) text 把二进制数据编码为只包含 ASCII 形式的数据。

支持的类型有base64,hex,escape。 encode('123\\000\\001', 'base64')

MTIzAAE=

initcap(text) text 把每个单词(空白分隔)的第一个子母转为大写 initcap('hi thomas') Hi

Thomas

length(string) integer 字串中字符的数目 length('jose') 4

lpad(string text, length integer [, fill text]) text 通过填充字符 fill

(缺省时为空白), 把 string 填充为长度 length. 如果 string 已经比 length 长则将其截断(在右边).

lpad('hi', 5, 'xy') xyxhi

ltrim(string text, characters text) text 从字串 string 的 开头 删除只包含

characters 的最长的字串. ltrim('zzzytrim','xyz') trim

md5(string text) text 计算给出字串的 MD5 散列,以十六进制返回结果。 md5('abc')

900150983cd24fb0d6963f7d28e17f72

pg_client_encoding() name 当前客户端编码名称. pg_client_encoding()

SQL_ASCII

quote_ident(string text) text 返回给出字串的一个适用于在SQL语句字串里当作标识符引起使用的形式。

只有在必要的时候才会添加引号(也就是说,如果字串包含非标识符字符或者会 转换大小写的字符)。 嵌入的引号被恰当地写了双份。

quote_ident('Foo') "Foo"

quote_literal(string text) text 返回给出字串的一个适用于在SQL语句字串里当作文本使用的形式。

嵌入的引号和反斜杠被恰当地写了双份。 quote_literal('O\'Reilly') 'O''Reilly'

repeat(text, integer) text 重复 text 一定次数. repeat('Pg', 4)

PgPgPgPg

replace(string text, from text, to text) text 把字串string里出现地所有子字串

from 替换成子字串 to。 replace('abcdefabcdef', 'cd', 'XX')

abXXefabXXef

rpad(string text, length integer [, fill text]) text 通过填充字符 fill

(缺省时为空白), 把 string 填充为长度 length. 如果 string 已经比 length 长则将其截断.

rpad('hi', 5, 'xy') hixyx

rtrim(string text, character text) text 从字串 string 的 结尾 删除只包含

character 的最长的字串. rtrim('trimxxxx','x') trim

split_part(string text, delimiter text, field integer) text 根据

delimiter 分隔 string 返回生成的第 field 个子字串(一为基)。

split_part('abc~@~def~@~ghi','~@~',2) def

strpos(string, substring) text 声明的子字串的位置.(和 position(substring in

string一样),不过要注意参数顺序 是相反的) strpos('high','ig') 2

substr(string, from [, count]) text 抽取子字串.(和 substring(string from

from for count)一样) substr('alphabet', 3, 2) ph

to_ascii(text [, encoding]) text 把文本从其它编码转换为 ASCII. [a]

to_ascii('Karel') Karel

to_hex(number integer 或者 bigint) text 把 number 转换成其对应地十六进制表现形式。

to_hex(9223372036854775807) 7fffffffffffffff

translate(string text, from text, to text) text 把在 string 中包含的任何匹配

from 中的字符的字符转化为对应的 在 to 中的字符. translate('12345', '14', 'ax')

a23x5

Notes:

a. to_ascii 函数只支持从 LATIN1, LATIN2,和 WIN1250 转换。

--语 句              功 能

--数据操作

SELECT   --从数据库表中检索数据行和列

INSERT   --向数据库表添加新数据行

DELETE   --从数据库表中删除数据行

UPDATE   --更新数据库表中的数据

--数据定义

CREATE TABLE  --创建一个数据库表

DROP TABLE   --从数据库中删除表

ALTER TABLE   --修改数据库表结构

CREATE VIEW   --创建一个视图

DROP VIEW   --从数据库中删除视图

CREATE INDEX  --为数据库表创建一个索引

DROP INDEX   --从数据库中删除索引

CREATE PROCEDURE  --创建一个存储过程

DROP PROCEDURE  --从数据库中删除存储过程

CREATE TRIGGER  --创建一个触发器

DROP TRIGGER  --从数据库中删除触发器

CREATE SCHEMA  --向数据库添加一个新模式

DROP SCHEMA   --从数据库中删除一个模式

CREATE DOMAIN  --创建一个数据值域

ALTER DOMAIN  --改变域定义

DROP DOMAIN   --从数据库中删除一个域

--数据控制

GRANT   --授予用户访问权限

DENY   --拒绝用户访问

REVOKE   --解除用户访问权限

--事务控制

COMMIT   --结束当前事务

ROLLBACK   --中止当前事务

SET TRANSACTION  --定义当前事务数据访问特征

--程序化SQL

DECLARE   --为查询设定游标

EXPLAN   --为查询描述数据访问计划

OPEN   --检索查询结果打开一个游标

FETCH   --检索一行查询结果

CLOSE   --关闭游标

PREPARE   --为动态执行准备SQL 语句

EXECUTE   --动态地执行SQL 语句

DESCRIBE   --描述准备好的查询

---局部变量

declare @id char(10)

--set @id = ’10010001’

select @id = ’10010001’

---全局变量

---必须以@@开头

--IF ELSE

declare @x int @y int @z int

select @x = 1 @y = 2 @z=3

if @x > @y

print ’x > y’ --打印字符串’x > y’

else if @y > @z

print ’y > z’

else print ’z > y’

--CASE

use pangu

update employee

set e_wage =

case

when job_level = ’1’ then e_wage*1.08

when job_level = ’2’ then e_wage*1.07

when job_level = ’3’ then e_wage*1.06

else e_wage*1.05

end

--WHILE CONTINUE BREAK

declare @x int @y int @c int

select @x = 1 @y=1

while @x < 3

begin

print @x --打印变量x 的值

while @y < 3

begin

select @c = 100*@x + @y

print @c --打印变量c 的值

select @y = @y + 1

end

select @x = @x + 1

select @y = 1

end

--WAITFOR

--例 等待1 小时2 分零3 秒后才执行SELECT 语句

waitfor delay ’01:02:03’

select * from employee

--例 等到晚上11 点零8 分后才执行SELECT 语句

waitfor time ’23:08:00’

select * from employee

***SELECT***

select *(列名) from table_name(表名) where column_name operator

value

ex:(宿主)

select * from stock_information where stockid  = str(nid)

stockname = ’str_name’

stockname like ’% find this %’

stockname like ’[a-zA-Z]%’ --------- ([]指定值的范围)

stockname like ’[^F-M]%’  --------- (^排除指定范围)

--------- 只能在使用like关键字的where子句中使用通配符)

or stockpath = ’stock_path’

or stocknumber < 1000

and stockindex = 24

not stocksex = ’man’

stocknumber between 20 and 100

stocknumber in(10,20,30)

order by stockid desc(asc) --------- 排序,desc-降序,asc-升序

order by 1,2 --------- by列号

stockname = (select stockname from stock_information where

stockid = 4)

--------- 子查询

a4c26d1e5885305701be709a3d33442f.pnghttp://www.acnow.net/ oYIpsxSPAIC

--------- 除非能确保内层select只返回一个行的值,

--------- 否则应在外层where子句中用一个in限定符

select distinct column_name form table_name ---------

distinct指定检索独有的列值,不重复

select stocknumber ,"stocknumber + 10" = stocknumber + 10 from

table_name

select stockname , "stocknumber" = count(*) from table_name group

by stockname

--------- group by 将表按行分组,指定列中有相同的值

having count(*) = 2 --------- having选定指定的组

select * from table1, table2

where table1.id *= table2.id --------

左外部连接,table1中有的而table2中没有得以null表示

table1.id =* table2.id -------- 右外部连接

select stockname from table1

union [all] ----- union合并查询结果集,all-保留重复行

select stockname from table2

***insert***

insert into table_name (Stock_name,Stock_number) value

("xxx","xxxx")

value (select Stockname , Stocknumber from

Stock_table2)---value为select语句

***update***

update table_name set Stockname = "xxx" [where Stockid = 3]

Stockname = default

Stockname = null

Stocknumber = Stockname + 4

***delete***

delete from table_name where Stockid = 3

truncate table_name ----------- 删除表中所有行,仍保持表的完整性

drop table table_name --------------- 完全删除表

***alter table*** --- 修改数据库表结构

alter table database.owner.table_name add column_name char(2) null

.....

sp_help table_name ---- 显示表已有特征

create table table_name (name char(20), age smallint, lname

varchar(30))

insert into table_name select ......... ----- 实现删除列的方法(创建新表)

alter table table_name drop constraint Stockname_default ----

删除Stockname的default约束

***function()***

----统计函数----

AVG  --求平均值

COUNT  --统计数目

MAX  --求最大值

MIN  --求最小值

SUM  --求和

--AVG

use pangu

select avg(e_wage) as dept_avgWage

from employee

group by dept_id

--MAX

--求工资最高的员工姓名

use pangu

select e_name

from employee

where e_wage =C

(select max(e_wage)

from employee)

--STDEV()

--STDEV()函数返回表达式中所有数据的标准差

--STDEVP()

--STDEVP()函数返回总体标准差

--VAR()

--VAR()函数返回表达式中所有值的统计变异数

--VARP()

--VARP()函数返回总体变异数

----算术函数----

SIN(float_expression) --返回以弧度表示的角的正弦

COS(float_expression) --返回以弧度表示的角的余弦

TAN(float_expression) --返回以弧度表示的角的正切

COT(float_expression) --返回以弧度表示的角的余切

ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角

ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角

ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角

ATAN2(float_expression1,float_expression2)

--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角

DEGREES(numeric_expression)

--把弧度转换为角度返回与表达式相同的数据类型可为

--INTEGER/MONEY/REAL/FLOAT 类型

RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为

--INTEGER/MONEY/REAL/FLOAT 类型

EXP(float_expression) --返回表达式的指数值

LOG(float_expression) --返回表达式的自然对数值

LOG10(float_expression)--返回表达式的以10 为底的对数值

SQRT(float_expression) --返回表达式的平方根

CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT 类型

FLOOR(numeric_expression)  --返回<=表达式的最小整数返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT 类型

ROUND(numeric_expression)  --返回以integer_expression

为精度的四舍五入值返回的数据

--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型

ABS(numeric_expression)   --返回表达式的绝对值返回的数据类型与表达式相同可为

--INTEGER/MONEY/REAL/FLOAT 类型

SIGN(numeric_expression)   --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型

--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型

PI()    --返回值为π 即3.1415926535897936

RAND([integer_expression])  --用任选的[integer_expression]做种子值得出0-1

间的随机浮点数

----字符串函数----

ASCII()     --函数返回字符表达式最左端字符的ASCII 码值

CHAR()  --函数用于将ASCII 码转换为字符

--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值

LOWER()  --函数把字符串全部转换为小写

UPPER()  --函数把字符串全部转换为大写

STR()  --函数把数值型数据转换为字符型数据

LTRIM()  --函数把字符串头部的空格去掉

RTRIM()  --函数把字符串尾部的空格去掉

LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串

CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置

SOUNDEX() --函数返回一个四位字符码C

--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值

DIFFERENCE()  --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异

--0 两个SOUNDEX 函数返回值的第一个字符不同

--1 两个SOUNDEX 函数返回值的第一个字符相同

--2 两个SOUNDEX 函数返回值的第一二个字符相同

--3 两个SOUNDEX 函数返回值的第一二三个字符相同

--4 两个SOUNDEX 函数返回值完全相同

QUOTENAME() --函数返回被特定字符括起来的字符串

REPLICATE()   --函数返回一个重复character_expression 指定次数的字符串

REVERSE()    --函数将指定的字符串的字符排列顺序颠倒

REPLACE()    --函数返回被替换了指定子串的字符串

SPACE()  --函数返回一个有指定长度的空白字符串

STUFF()  --函数用另一子串替换字符串指定位置长度的子串

----数据类型转换函数----

CAST() 函数语法如下

CAST() ( AS [ length ])

CONVERT() 函数语法如下

CONVERT() ([ length ], [, style])

select cast(100+99 as char) convert(varchar(12), getdate())

运行结果如下

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

199  Jan 15 2000

----日期函数----

DAY()  --函数返回date_expression 中的日期值

MONTH()  --函数返回date_expression 中的月份值

YEAR()  --函数返回date_expression 中的年份值

DATEADD( , ,)

--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期

DATEDIFF( , ,)

--函数返回两个指定日期在datepart 方面的不同之处

DATENAME( , ) --函数以字符串的形式返回日期的指定部分

DATEPART( , ) --函数以整数值的形式返回日期的指定部分

GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间

----系统函数----

APP_NAME()   --函数返回当前执行的应用程序的名称

COALESCE() --函数返回众多表达式中第

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值