admin 管理员组

文章数量: 887021


2024年2月28日发(作者:mysql中update语句)

目 录

INFORMIX数据类型 .............................................................................. 2

表达式用途 ................................................................................................ 3

表达式 ......................................................................................................... 4

校正表达式 ............................................................................................................................... 4

条件表达式 ............................................................................................................................... 4

一般性CASE表达式 .............................................................................................................. 4

线形CASE表达式 .................................................................................................................. 5

常量表达式 ............................................................................................................................... 5

引号字符串表达式 ................................................................................................................... 6

函数清单 .................................................................................................... 6

ABS函数 .................................................................................................................................. 9

DBINFO函数 ......................................................................................................................... 10

CARDINALITY函数 ............................................................................................................ 14

长度函数 ................................................................................................................................. 14

DATE函数 ............................................................................................................................. 15

DAY函数 ............................................................................................................................... 15

三角函数 ................................................................................................................................. 16

ACOS函数 ............................................................................................................................. 16

ASIN函数 .............................................................................................................................. 16

ATAN函数 ............................................................................................................................. 16

ATAN2函数 ........................................................................................................................... 16

COUNT函数 .......................................................................................................................... 17

COUNT(*)函数 ................................................................................................................. 17

COUNT DISTINCT和COUNT UNIQUE函数 ................................................................... 17

AVG函数 ............................................................................................................................... 18

USER函数 ............................................................................................................................. 18

DBSERVERNAME 和SITENAME函数 ............................................................................ 18

TODAY函数 .......................................................................................................................... 18

CURRENT函数 ..................................................................................................................... 18

DATETIME ............................................................................................................................. 19

COLUMN ............................................................................................................................... 19

Concatonation 运算符 ........................................................................................................... 19

DECODE函数 ....................................................................................................................... 19

EXP函数 ................................................................................................................................ 20

EXTEND函数 ........................................................................................................................ 20

FILETOBLOB函数和FILETOCLOB函数 ......................................................................... 21

HEX函数 ............................................................................................................................... 22

IFX_ALLOW_NEWLINE函数 ............................................................................................. 22

IPX_REPLACE_MODULE函数 .......................................................................................... 22

INITCAP函数 ........................................................................................................................ 23

LOCOPY函数 ........................................................................................................................ 23

LOGN函数 ............................................................................................................................ 24

LOGN10函数......................................................................................................................... 24

LOTOFILE函数 ..................................................................................................................... 25

LOWER函数 ......................................................................................................................... 26

LPAD(源字符串,长度,嵌入字符串) ................................................................................ 26

RPAD(源字符串,长度,嵌入字符串) ................................................................................ 26

MAX(数字列|数字表达式) .................................................................................................... 26

MIN(数字列|数字表达式) ..................................................................................................... 26

MDY(expr1,expr2,expr3) ................................................................................................. 26

MOD(被除数,除数) ............................................................................................................. 26

MONTH(date/dtime_expr) ..................................................................................................... 26

NVL(表达式1,表达式2) .................................................................................................... 27

OCTET_LENGTH(变量名|列命) .......................................................................................... 27

POW(底数,指数) ................................................................................................................. 27

RANGE(数字列|数字表达式) ............................................................................................... 27

REPLACE(源字符串,匹配字符串,新字符串) ................................................................ 27

ROOT(被开方数,指数) ....................................................................................................... 27

ROUND(数字表达式,圆整系数) ........................................................................................ 27

SIN(弧度) ............................................................................................................................... 27

SITENAME ............................................................................................................................ 27

STDEV(数字列) ..................................................................................................................... 27

SUBSTR(源字符串,开始位置,长度) ............................................................................... 27

SUM(数字列|数字表达式) ..................................................................................................... 28

TAN(弧度) .............................................................................................................................. 28

TO_CHAR(DATE|DATETIME,格式字符串) ........................................................................ 28

TO_DATE(字符表达式,格式字符串) ................................................................................. 28

TODAY ................................................................................................................................... 28

TRIM([LEADING|TRAILING|BOTH] trim_expr FROM source_expr) ............................... 28

TRUNC(表达式,截去系数)................................................................................................. 29

UPPER(源字符串).................................................................................................................. 29

VARIANCE(数字列) .............................................................................................................. 29

WEEKDAY(date|dtime_expr) ................................................................................................. 29

YEAR(date|dtime_expr) ......................................................................................................... 29

INFORMIX数据类型

BYTE

CHAR(n)

CHARACTER(n)

CHARACTER

存储任何种类二进制数据

存储单个或多个字符序列,

包括字母、数字、符号

同CHAR相似

同CHAR,m为最大长度,r

VRAYING(m,r)

DATE

DATETIME

DEC

DECIMAL

DOUBLE PRECISION

FLOAT(n)

INT

INTEGER

INTERVAL

MONEY(p,s)

MULTISET(e)

NCHAR(n)

NUMERIC(p,s)

为最小保留空间

日期型

日期时间型

同DECIMAL相似

定点数方式存储数值

双精度型

浮点型

同INTEGER相似

整型(-247483647

时间间隔

货币型

存储一个集合

同CHAR

同DECIMAL,p为总长度,

s为小数位数,s为0表示存储的为整数

同VARCHAR

同SMALLFLOAT

行类型

类似INTEGER,系统自动生成值

类似INTEGER,系统自动生成值

浮点型

短整型(-32767to32767)

存储可打印ASCII字符及ctrl-j,ctrl-I,ctrl-l

同CHAR,最长255)

NVARCHAR(m,r)

REAL

Row, Named

SERIAL

SERIALS

SMALLFLOAT

SMALLINT

TEXT

VARCHAR(m,r)

表达式用途

表达式类型

算术运算符号

接合表达式

校正操作符

列表达式

条件表达式

常量表达式

构造器表达式

函数表达式

用途

提供对表达式一个项目(一元操作符号)或一个项目(二元操作符号)数学运算的支持

提供接合两个字符串值的功能

提供从一种数据类型显示校正到另一种数据类型的功能

提供在数据操作语句中使用部分或全部列值的功能

提供根据条件测试结果返回数值的功能

提供在数据操作语句中使用直接数值的功能

提供动态生成复杂数据类型的功能

提供在数据操作语句中使用内部函数或用户定义函数的

功能

语句本地变量表达式

合计函数

YEAR(date|dtime_expr) 返回DATE或DTETIME型日期中年份部分的整数。(4位数字)

指定如何在SQL语句其他地方使用定义的语句本地变量(SQL)

提供在数据操作语句中使用内部合计函数或用户定义合计函数的功能

表达式

校正表达式

CAST(表达式::target_data_type AS target_data_type)

可以用CAST AS关键字或双冒号校正操作符(::)将一种数据类型的表达式校正为另一种数据类型的表达式。

下例显示两种不同方法,将x与y的和转换为用户定义类型user_type。两种方法产生相同的结果,都要求存在x+y返回的类型与用户定义类型间转换的显式或隐式校正。

Cast(x+y) AS user_type

(x+y):: user_type

insert into test(a,b,c,e,f,g) values ("2abc",'12-2-06’::date,3456666,23.2,555,23.56);

条件表达式

条件表达式返回值取决于条件测试的输出,下列框图显示条件表达式的语法。

CASE表达式

CASE表达式使用SELECT语句之类的SQL语句可以根据某个条件测试求值为真而返回几个可能值之一。CASE表达式有两种形式,

搜索条件和结果值表达式中可以包含子查询。

CASE表达式中可以嵌套另一个CASE表达式。

合计表达式中出现CASE表达式时,不能在CASE表达式中使用合计函数。

一般性CASE表达式

一般性CASE表达式测试WHEN子句中的真值条件,并在发现真值时返回THEN子句中指定的结果。

CASE

WHEN 条件

THEN expr

ELSE expr

END

例:

SELECT cust_name,

CASE

WHEN number_of_problems=0

THEN 100

WHEN number_of_problems>0 AND number_of_problems<4

THEN number_of_problems *500

WHEN number_of_problems >=4 and number_of_problems<=9

THEN number_of_problems*400

ELSE

( number_of_problems *300) +250

END,

Cust_address

FROM custtab

在一般性的CASE表达式中,所有结果应为相同类型,否则应求值为共同兼容的类型。如果所有WHEN子句中的结果不是相同类型,或不求值为共同兼容的类型,否则会发生错误。

线形CASE表达式

线形CASE表达式测试CASE关键字后面的数值表达式与WHEN子句中的数值表达式是否匹配。

CASE expr

WHEN expr THEN expr

ELSE expr

END

例:

SELECT title

CASE movie_type

WHEN 1 THEN ‘HORROR’

WHEN 2 THEN ‘COMEDY’

WHEN 3 THEN ‘ROMANCE’

WHEN 4 THEN ‘WESTERN’

END,

Our_cost

FROM movie_titles

在线形CASE表达式中,所有WHEN子句中的数值表达式类型应有CASE关键字后面的数

值表达式类型兼容。

常量表达式

下列框图显示了常量表达式的语法:

引号字符串

直接数数值

USER

SITENAME

DBSERVERNAME

TODAY

CURRENT DATETIME字段限定符

直接数DATETIME

直接数INTERVAL

Num UNITS datetime_unit

直接数集合

直接行数

Literal opaque type

Literal BOOLEAN

元素

Datetime_unit

用途

指定间隔精度的单位,即YEAR、MONTH、DAY、HOUR、MINUTE、SECOND或FRACTION

如果单位为YEAR,则表达式为年月间隔,否则表达式为日时间隔

限制

日期时间单位应为“用途”列所列的关键字之一

关键字可以用大写或小写字母

关键字不能放在引号内

语法

见限制列

Literal BOOLEAN BOOLEAN值的直接BOOLEAN 值的直数表示 接数表示可以为t(TRUE)或f(FALSE)

非透明数据类型的直接数表示

指定日期时间单位数的直接数数字详见“UNITS关键字”

相关非透明数据类型的输入支持函数应认识这个直接数

引号字符串

Literal opaque type 由非透明类型开发人员定义直接数

num 如果num不是整数,

则在使用时圆整化为最接近的整数

n指定的值应与选择的日期时间单位对应

引号字符串表达式

下例显示引号字符串表达式:

SELECT ‘The first name is’,fname FROM customer

INSERT INTO manufact VALUES(‘sps’,’supersport’

UPDATE cust_calls SET res_dtime=’1997-1-1 10:45’

WHERE customer_num=120 AND call_code=’B’

直接数表达式

下例显示直接数表达式

INSERT INTO items VALUES (4,35,52,’HRO’,`12,4,00)

INSERT INTO acreage VALUES(4,5,2e4)

SELECT unit_price +5 FROM stock

SELECT-1 * balance FROM accounts

函数清单

名称

ABS函数

ACOS函数

加号运算符号(+)

ASIN函数

ATAN函数

ATANA2函数

用途

返回某个表达式样的绝对值

返回数字表达式的反余弦

可以将两个两个表达式相加

返回数字表达式的反正弦

返回数字表达式的反正切

计算坐标(x,y)的极坐标(r, θ)

AVG函数

CARDINALITY函数

CASE表达式

CAST表达式(IDS)

校正操作符

CHARACTER_LENGTH函数

CHAR_LENGTH函数

列表达式

接合操作符

常量表达式

COS函数

COUNT(一组函数)

返回指定列或表达式中所有值的平均值

返回集合(SET、MULTISET或LIST)中的元素个数

根据求值为真的条件测试返回几个值之一

将一种数据类型校正为另一种数据类型

见双冒号校正操作符

见CHAR_LENGTH函数

返回字符列中的逻辑字符数(而不是字节数)

表中的完整或部分列值

接合两个表达式的输出

求值为常量值的表达式

返回弧度表达式的余弦

提供一组计算列值和表达式的函数

调用每个函数时,在COUNT关键字后面指定相应变元。

见COUNT(column)函数

返回指定列中的非null值个数

返回指定列中不同值(不包括NULL)个数

返回指定列中不同值(不包括NULL)个数

返回符合查询条件的行数。如果不指定WHERE子句,则这个函数返回表中的总行数

显示当前时刻,返回由日期和时间构成的DATETIME值

返回对应于所调用非日期表达式的DATE值

返回表示当月日期的函数

提供一组函数,读取不同类型的数据库信息

调用每个函数时要指定相应DBINFO选项。下面列出每个DBINFO选项

返回指定表中的每一行所在合作服务器的合作服务器ID

COUNT(ALL column)函数

COUNT(column)函数

COUNT DISTINCT 函数

COUNT UNIQUE函数

COUNT(*)函数

CURRENT函数

DATE函数

DAY函数

DBINFO(一组函数)

DBINFO(’coserverid’字符串加上表名限定的列名加’currentrow’字符串)(EDS)

DBINFO(’coserverid’字符串不带变元)返回输入查询的用户所连接合作服务器的合(EDS) 作服务器ID

DBINFO(‘dbhostname’选项)

DBINFO(’dbspace’字符串加上表名限定的列名加’currentrow’字符串)(EDS)

DBINFO(’dbspace’字符串加tblspace号)

DBINFO(’serial8’选项)(IDS)

DBINFO(‘sessionid’选项)

DBINFO(’d1’选项)

DBINFO(’d2’ 选项)

返回客户机应用程序连接的数据库服务器主机名

返回对应于一个tblspace号的dbspace名称

返回插入表中的最后一个序列值

返回当前对话的对话ID

返回插入表中的最后一个序列值

返回选择、插入、删除、更新、EXECUTE

PROCEDURE语句和EXECUTE FUNCTION

语句处理的行数

DBINFO(’version’选项)

DBSERVERNAME函数

DECODE函数

返回客户机应用程序连接的数据库服务器具体版本

返回数据库服务器名

求值一个或几个表达式对,并比较每对中的when表达式与指定的数值表达式;

DECODE函数找到对中的when表达式与指定的数值表达式之间的匹配时,它返回该表达式对中的then表达式值

转换数据类型

返回一个数值表达式的指数

调整DATETIME或DATE值的精度

指定操作系统文件中存放的数据生成BLOB值

指定操作系统文件中存放的数据生成CLOB值

返回整数表达式的十六进制编码

设置新行方式,在某个对话中允许使用引号字符串中的新行符或禁止引号字符串中的新行符

将装入共享数据库换成不同名称或地址的新版本

转换源表达式,使源表达式中每个单词以大写字母开始,其余字母全部用小写字母。

返回字符列中的字节数,不包括尾部空格

生成智能大型对象的备份

返回数字表达式的自然对数

返回底数为10的对数

将智能大型对象复制到操作系统文件中

将源表达式转换为小写字母

左嵌入函数。长度指源字符串和嵌入字符串的总长度

右嵌入函数。长度指源字符串和嵌入字符串的总长度

求最大值函数。| 表示或

求最小值函数

返回expr1,expr2,expr3的DATE值,expr1,expr2,expr3均为整型数据,expr1表示月,expr2表示日,expr3表示年,其中年用4位除运算符(/)

双冒号操作符(::)

EXP函数

EXTEND函数

FILETOBLOB函数

FILETOCLOB函数

HEX函数

IFX_ALLOW_NEWLINE函数

IPX_REPLACE_MODULE函数

INITCAP函数

LENGTH函数

LOCOPY函数

LOGN函数

LOGN10函数

LOTOFILE函数

LOWER函数

LPAD(源字符串,长度,嵌入字符串)

RPAD(源字符串,长度,嵌入字符串)

MAX(数字列|数字表达式)

MIN(数字列|数字表达式)

MDY(expr1,expr2,expr3)

整数表示。

MOD(被除数,除数)

MONTH(date/dtime_expr)

NVL(表达式1,表达式2)

OCTET_LENGTH(变量名|列命)

POW(底数,指数)

RANGE(数字列|数字表达式)

REPLACE(源字符串,匹配字符串,新字符串)

ROOT(被开方数,指数)

ROUND(数字表达式,圆整系数)

SIN(弧度)

SITENAME

STDEV(数字列)

SUBSTR(源字符串,开始位置,长度)

SUBSTRING(源字符串FROM开始位置FOR长度)

SUM(数字列|数字表达式)

取模函数

返回DATE或DTETIME型日期中月份部分的整数

表达式1和表达式2必须是相匹配的数据类型,并且不可以是主变量、BYTE、TEXT

返回字符列所占的字节数

求底数的指数次方

RANGE=MAX-MIN

REPLACE(源字符串,匹配字符串,新字符串)

指数!=0

四舍五入函数

正弦函数

返回数据库服务器的名字

标准差函数

取子字符串函数,长度指在源字符串中截取的字符数。

功能同SUBSTR

求和函数

统计函数中的数字表达式不能含有统计函数,

如SUM(AVG(数字列))是错误的用法,统计函数不能出现在WHERE子句中

正切函数

此函数的作用是按格式字符串指定的格式把DATA、DATETIME型数据转换成子

符型

此函数功能与TO_CHAR相反,用法类似

返回DATE型系统时间

此函数的作用是从source_expr中删去与trim_expr中相匹配的字符

TRUNC(24536.8746,-2)=24500

将源字符串全部转换为大写

返回当前用户的用户名。

方差函数

返回DATE或DTETIME型日期中日期部分的整数。(从0到6

TAN(弧度)

TO_CHAR(DATE|DATETIME,格式字符串)

TO_DATE(字符表达式,格式字符串)

TODAY

TRIM([LEADING|TRAILING|BOTH]

trim_expr FROM source_expr)

TRUNC(表达式,截去系数)

UPPER(源字符串)

USER

VARIANCE(数字列)

WEEKDAY(date|dtime_expr)

ABS函数

ABS(num_expression)

ABS函数提供指定表达式的绝对值。例:

SELECT order_num ,customer_num, ship_charge

FROM orders WHERE ABS(ship_charge)>20

DBINFO函数

DBINFO函数实际上是一个返回数据库不同信息的函数集合。通过在DBINFO关键字后定义一个特定选项来调用每个函数。可在SQL语句和UDR中任意地方使用DBINFO选项。

下表显示用DBINFO Option获得不同的数据库信息。‘选项‘列显示了每个DBINFO选项的名字,’用途‘列显示了 选项获得的该类数据库信息。

选项

dbspace---tblspace_num

d1

d2

用途‘

返回对应于Tblspace_num号的dbspace名

返回插入表中的最后一个序列值

返回选择、插入、删除、更新、EXECUTE

PROCEDURE语句或EXECUTE FUNCTION语句处理的行数

返回当前对话的对话ID

返回客户机应用程序所连接数据库服务器的主机名

返回客户机应用程序所连接数据库服务器的具体版本

返回插入表中的最后一个SERIAL8值

返回输入查询的用户所连接合作服务器的合作服务器ID

返回指定表的每一行所在合作服务器的合作服务器ID

返回指定表的每一行所在的dbspace名

sessionid

Dbhostname

Verison

Serial8

Coserverid

Coserverid currentrow

Dbspace currentrow

使用‘dbspace’选项加tblspace号

‘dbspace’选项返回对应于tblspace号的包含dbspace名的一个字符串,必须提供一个另外的参数,即tblspace_num或者一个求值为tblspace_num的表达式。下面的例使用’dbspace’选项。首先,查询systables系统目录表,确定表customer的tblspace_num列。然后执行该函数确定dbspace名。

SELECT tabname, partnum FROM systables Where tabname=’customer’

如果语句返回10448892分区号,可以将该值插入第二个变元中来找到包含customer表的dbspace。如下例所示:

SELECT DBINFO (‘dbspace’,1048892) FROM systables Where tabname =’customer’

如果想要查询dbspace名的表是分段表,必须查询sysfragments系统目录表查找每个表格分段的tblspace号。然后在一个单独的DBINFO查询中寻找每个tblspace号确定表格分段的所有dbspaces。

使用‘d1’选项

‘d1’选项返回一个整数,提供插入表中的最后一个序列值。为了确保结果有效,

将这个选项放在将一行带序列值插入表中的单数INSERT语句后面。

下面的例子使用‘d1’选项:

EXEC SQL create table fst_tab (ordernum serial,partnum int);

EXEC SQL create table sec_tab (ordernum serial);

EXEC SQL insert into fst_tab VALUES (0,1);

EXEC SQL insert into fst_tab VALUES (0,4);

EXEC SQL insert into fst_tab VALUES (0,6);

EXEC SQL insert into sec_tab values (dbinfo(‘d1’));

该例在fst_tab表中插入包含主关键字序列值的行,然后用DBINFO函数插入同一系列值到sec_tab表。DBINFO函数返回插入fst_tab表中最后行的序列值。

使用‘d2’选项:

该选项返回单个整数,提供SELECT ,INSERT,DELETE,UPDATE,EXECUTE

PROCEDURE和EXECUTE FUNCTION 语句处理的行数。为了确保结果有效,在SELECT,EXECUTE PROCEDURE和EXECUTE FUNCTION语句已经完全执行后使用该选项。为了确保在临时表中使用该选项有效,确定先读取所有行之后再关闭临时表。

下例演示SPL例程使用‘d2’选项确定表中被删除的行数。

CREATE FUNCTION del_rows( pnumb int)

RETURNING int;

DEFINE nrows int;

DELETE FROM fst_tab where part_number=pnumb;

LET nrows=DBINFO(‘d2);

RETURN nrows;

END FUNCTION

使用‘sessionid’选项:

DBINFO的该选项返回当前对话的对话ID。

当客户机应用程序与一个数据库服务器连接,该服务器和这个客户机开始对话并分配一个ID给这个客户。对话ID是客户和数据库服务器之间唯一标识符。数据库服务器储存对话ID值在一个叫做控制块的共享内存中。对于一个给定的对话控制块也包括用户ID,客户机进程ID,主计算机名和各种状态标识变量。

当使用‘sessionid’选项,数据库服务器从对话控制块中返回当前对话的对话ID,并将这个值作为整数值返回。Sysmaster数据库中有些system-monitoring interface(SMI)表格包括一个对话Id列,因此可以用DBINFO函数获得的对话ID从SMI表中提取你自己的对话的信息。

在下例中,用户在一个SELECT语句中定义DBINFO函数以得到当前的对话ID的值。用户在systables系统目录表中使用查询并使用WHERE子句将查询结果限制于一行。

SELECT DBINFO(‘sessionid’) AS my_sessinoid

FROM systables

WHERE tabname = ‘systables’

在上例中,SELECT语句查询systables系统目录表。然而,你可以通过查询数据库中任何系统目录表或用户表获得当前对话的ID。例如,可用下面的查询获得当前对话的对话ID。

SELECT DBINFO(‘sessionid’) AS user_sessionid

FROM customer

Where customer_num=101

在SPL例程中也可使用’sessionid’选项。下例SPL函数返回当前的对话ID值到调用的例程

或程序:

CREATE FUNCTION get_sess()

RETURNING INT;

RETURN DBINFO(‘sessionin’);

END FUNCTION;

使用‘dbhostname’选项

该选项得到客户机应用程序所连接的数据库服务器的主机名。该选项得出数据库服务器运行的计算机的实际计算机名称。

下例中,用户在SELECT语句中键入‘dbhostname’选项得到DB-ACCESS连接的数据库服务器的主机名。

SELECT DBINFO (’dbhostname’)

FROM systables

WHERE tabid=1

下表显示查询结果

(constant)

rd_lab1

‘ version’选项

可用‘ version’选项得出客户机应用程序连接的数据库服务器的确切版本号,从信息日志中得出确切的版本号字符串。完整版本字符串的值ononit实用程序-V选项显示的结果相同。

可用‘ version’选项的specifier参数来 定义想要得到的版本字符串的那部分字符。下表是specifier参数所得出的对应的版本信息。以完全的版本字符串:Server version 1.为例。

specifier参数值

‘server_type’

‘minor’

‘minor’

‘os’

返回的版本信息

数据库类型

当前服务器主要的版本号

当前服务器次级的版本号

版本信息字符串的操作系统标识符

T=windows NT

U=运行在32-bit操作系统的32-bit UNIX

H=运行在64-bit操作系统的32-bit UNIX

F=运行在64-bit操作系统的64-bitUNIX

当前服务器版本的过渡版本

如oninit –V 显示的完全版本信息

返回值

Dynamic Server

9

20

U

‘level’

‘full’

C1

Dynamic Server

Version 1

下例显示怎样在SELECT语句中用‘version’选项得出DB-Access客户连接的数据库服务器主要的版本信息:

SELECT DBINFO(‘version’,’major’)

FROM systables

WHERE tabid=1

下面是查询结果

(constant)

7

使用‘serial8’选项

‘serial8’选项选项返回一个整数,得出插入表中的最后SERIAL8值。为了确保结果有效,在插入了SERIAL8值的INSERT语句 后面使用该选项。

下例使用了‘serial8’选项:

EXEC SQL Create table fst_tab

(ordernum serial8,partnum int);

EXEC SQL cerate table sec_tab (ordernum serial8);

EXEC SQL insert into fst_tab VALUES (0,1)

EXEC SQL insert into fst_tab VALUES (0,4)

EXEC SQL insert into fst_tab VALUES (0,6)

EXEC SQL insert into sec_tab

Select dbinfo (‘serial8)

From sec_tab where paartnum=6;

该例将包含主关键字SERIAL8值的行插入fst_tab表在中,然后用DBINFO函数将同一SERIAL8值插入sec_tab表中。DBINFO函数返回的是插入fst_tab的最后一行的SERIAL8值。最后一行的子查询包含一个WHERE子句,因此返回一个单独的值。*

使用‘conserverid’选项不带其他变元

使用‘coserverid’选项不带其他变元返回输入查询的用户所连接合作服务器的合作服务器ID。

假定用下面的语句创建mytab表。

CREATE TABLE mytab (mycol INT)

FRAGMENT BY EXPRESSION

Mycol <5 in rootdbs.1

Mycol <5 in rootdbs.2

假定 名为dbspace rootdbs.1在 conserver 1中,名为dbspace rootdbs2在conserver 2中。并用下面的语句在mytab 表中插入如下行:

INSERT INTO mytab VALUES (‘1’);

INSERT INTO mytab VALUES (‘6’);

最后假定进行如下查询时你登陆conserver 1。这个查询显示mycol表中列值为1的行的所有列值。该查询也显示你键入查询时所登陆的合作服务器conserver ID.

SELECT * .DBINFO (‘coserverid’) AS cid

FROM mytab

WHERE mycol=1

如下是查询结果

mycol

1

cid

1

用‘coserverid’选项加表名和列名

用‘coserverid’选项加表名和列名加上‘currentrow’字符串返回指定表中每一行所在合作服务器的合作服务器coservert ID.该选项在将多个合作服务器分段表格时特别有用。

下例中,用户要显示每行所在合作服务器的coserver ID和mytab表的所有的行和列。

SELECT *.DBINFO (‘coserverid’, ,’currentrow’)

AS cid

FROM mytab

下表显示查询结果

mycol

1

6

cid

1

2

在DBINFO函数列中指定的列可以是任何指定表中的任何列。

用‘dbspace’选项加表名和列名

用该选项加表名和列名加上‘currentrow’字符串返回指定表中每行所在dbspace的dbspace

ID。这个选项在多个dbspaces上分段表格式时特0别有用。

下例中,用户要求看见每行所属的dbspace的dbspace ID和mytab表中所有列和行。

SELECT *.DBINFO (‘dbspace’,,’currentrow’)

AS dbsp

FROM mytab

如下是查询结果:

mycol

1

2

dbspace

rootdbs.1

rootdbs.2

在 DBINFO中所指定的列可以是指定表中的任何列。

CARDINALITY函数

该函数返回集合列(SET、MULTISET、LIST)中的元素个数。

假设set_col列包含下列值:

(3,7,9,16,0)

下列SELECT语句返回5作为set_col列的元素数目:

SELECT CARDINALITY(set_col)

FROM table

如果结合包含重复元素,则CARDINALITY计算各个元素。

长度函数

长度函数可以确定列、字符串或变量的长度。

LENGTH(CHAR_LENGTH

CHARACTER_LENGTH

OCTET_LENGTH)

引号字符串

Variable_name

元素

Column

Table

Variable_name

长度函数包括:

■LENGTH

■OCTET_LENGTH

■CHAR_LENGTH(也称CHARACTER_LENGTH)

这些函数各有不同用途。

LENGTH函数

LENGTH函数返回字符列中的字节数,不包括尾部空格。对于BYTE或TEXT列,LENGTH函数返回列中的全部字节数,包括尾部空格。

下例演示LENGTH函数的用法:

SELECT customer_num,LENGTH(fname) + LENGTH(lname),

LENGTH(‘How many bytes is this?’)

FROM customer WHERE LENGTH(company)>10

在ESQL/C中,可以用LENGTH函数返回字符变量的长度。

OCTET_LENGTH函数

OCTET_LENGTH函数返回字符列中的字符数(而不是字节数),CHARACTER_LENGTH 是CHAR_LENGTH的同义词。

用途

指定表中的列名

列所在的表名

包含字符串的宿主变量或SPL变量

限制

表应存在

宿主变量或SPL变量应为字符数据类型

语法

数据库对象名

名称应符合变量名的语言特定规则

列应为字符数据类型 标识符

DATE函数

DATE函数返回对应于所调用非日期表达式的DATE值。可以指定能变为 DATE数据类型的数值表达式。通常指定求值为CHAR、DATETIME或INTEGER值的表达式。

下列WEHERE子句指定CHAR值非日期表达式:

WHERE order_date

DATE函数解释CHAR值非日期表达式时,它希望这个表达式符合DBDATE环境变量指定的DATE格式。例如,假设执行下列查询时DBDATE设置为Y2MD/:

SELECT DISTINCT DATE(‘02/01/1998’) FROM ship_info

则这个SELECT语句产生一个错误,因为DATE函数不能转换这个非日期表达式。DATE函数将日期字符串的第一部分(02)解释为年份,第二部分(01)解释为月份,第三部分(1998)是个4位数,但DATE函数需要2位数(有效日期值在01到31之间)。因此,它无法转换这个非日期表达式。要在DBDATE设置为Y2MD/时让SELECT语句顺利执行,非日期表达式应为‘98/02/01’。

对非日期表达式指定正整数值时,DATE函数将其值解释为1899年12月31日之后的天数。如果该值为负数,则DATE函数将其值解释为1899年12月31日之前的天数。下列WHERE子句指定INTEGER非日期表达式值:

WHERE order_date

数据库服务器搜索order_date值小于1900年12月31日(12/31/1899加365天)的行。

DAY函数

DAY函数返回表示当月几号的整数。下例用DAY 函数和CURRENT函数比较列值与当前日期:

WHERE DAY(order_date)>DAY(CURRENT)

三角函数

三角函数取一个变元,如下列框图所示。

COS

SIN

TAN

ASIN

ACOS

ATAN

ATAN2

元素

Numeric_expr

用途

作为ASIN、ACOS或ATAN函数变元的数字表达式

求值为弧度值的表达式

限制

表达式应求值为-1到1之间的值

表达式应求值为数字值

语法

表达式

Y,x

Numeric_expr

Radian_expr

Radian_expr

X

y

表达式

表达式

表达式

表示直角坐标(x,y)表达式应求值为数字中x的 表达式 值

表示直角坐标(x,y)表达式应求值为数字中x的 表达式 值

弧度表达式公式

COS、SIN和TAN函数取弧度(radian_expr)数作为变元。

如果要将度数换算为弧度值,用下列公式:

# degrees *p/180=# radians

如果要将弧度值换算为度数,用下列公式:

# radians *180/ p =# degrees

COS函数

COS函数返回弧度表达式公式的余弦值。下例返回anglestbl表中度数列的余弦值,表达式中的读数要换算为弧度值:

SELECT COS(degrees*180/3.1416)FROM anglestbl

ACOS函数

ACOS函数返回数字表达式的反余弦值,下例返回(-0.73)弧度反余弦值:

SELECT ACOS(-0.73)FROM anglestbl

ASIN函数

ASIN函数返回数字表达式的反正弦值,下例返回(-0.73)弧度反正弦值:

SELECT ASIN(-0.73)FROM anglestbl

ATAN函数

ATAN函数返回数字表达式的反正切值,下例返回(-0.73)弧度反正切值:

SELECT ATAN(-0.73)FROM anglestbl

ATAN2函数

ATAN2函数计算坐标(x,y)的极坐标(r, θ)角度组件。下例对直角坐标(4,5)比较angles与θ:

WHERE angles>ATAN2(4,5) --determinesθ for (4,5)and compares to angles

可以用下例所示的表达式确定直角坐标(4,5)的径向坐标长r:

SQRT(POW(x,2) + POW(y,2)) --determines r for (x,y)

可以用下例所示的表达式确定直角坐标(4,5)的径向坐标长r:

SQRT(POW(4,2) + POW(5,2)) -- determines r for (4,5)

COUNT函数

COUNT函数实际上是一组函数,可以用不同方式计算列值和表达式。要调用COUNT函数,可以在COUNT关键字后面指定特定变元。下面几节将介绍COUNT函数的每种形式。

COUNT(*)函数

COUNT(*)函数返回符合SELECT语句WHERE子句的行数。下例寻找stock表中多少行的manu_code列取值为HRO:

SELECT COUNT(*)FROM stock WHERE manu_code=’HRO’

如果SELECT语句不用WHERE子句,则COUNT(*)函数返回表中的总行数。下例寻找stock表中有多少行:

SELECT COUNT(*)FROM stock

如果SELECT语句包含GROUP BY子句,则COUNT(*)函数反映每组中的数值个数。下例按名字组合,数据库服务器发现多个同名行时,选择这些行:

SELECT fname,COUNT(*) FROM counter

GROUP BY fname

HAVING COUNT(*)>1

如果多行的值为null,则COUNT(*)函数在计算时包括null列,除非WHERE子句显式将其省略。

COUNT DISTINCT和COUNT UNIQUE函数

COUNT DISTINCT函数返回列或表达式中的不同值个数,如下例所示。如果COUNT

DISTINCT函数遇到null,则它将其忽略。

SELECT COUNT(DISTINCT item_num) FROM item

如果指定列的每个值都为null,则COUNT DISTINCT不是将其忽略,而是对该列返回0。UNIQUE关键字的含义在和COUNT关键字一起使用时,含义与DISTINCT相同。UNIQUE返回列或表达式的非null唯一值个数。

下例用COUNT UNIQUE函数,与前面使用COUNT DISTINCT函数的示例是等价的;

SELECT COUNT (UNIQUE item_num) FROM item

COUNT column函数

COUNT column函数返回列或表达式中的非null值总个数,如下例所示:

SELECT COUNT(item_num) FROM items

可以在指定列名之前加上ALL关键字以保证清晰,但无论是否包括ALL关键字,查询结果都是相同的。

下例显示如何在COUNT column函数中包括ALL关键字:

SELECT COUNT(ALL item_num) FROM items

比较不同COUNT函数

可以用COUNT函数的不同形式读取表格的不同类型信息。下表 总结COUNT函数每种形式的含义。

COUNT函数

COUNT(*)

说明

返回符合查询条件的行数

如果不指定WHERE子句,则这个函数返回表中的总行数

COUNT DISTINCT 或COUNT UNIQUE 返回指定列中的唯一非null值个数

COUNT (column)或COUNT(ALL column) 返回指定列中的非null值总个数

可以用一些示例显示COUNT函数不同形式之间的差别。下例对演示数据库中的orders表进行查询。大多数示例对orders表的ship_instruct列进行查询。

AVG函数

AVG函数返回指定列或表达式中所有值的平均值。只能对数字列采用AVG函数。如果使用DISTINCT关键字,则平均值为指定列或表达式中唯一值的平均值。下列查询寻找平均价格:

SELECT AVG(unit_price) FROM stock WHERE stock_num=110

除非指定列中所有值均为null,否则忽略null值。如果指定列中所有值均为null,则AVG函数对该列返回null值。

USER函数

USER 函数返回包含当前用户(即运行进程的人员)登陆名的字符串。

下列语句显示如何使用USER函数:

INSERT INTO cust_calls VALUES

(221,CURRENT,USER,’B’,’Decimal point off’,NULL,NULL)

SELECT * FROM cust_calls WHERE user_id=USER

UPDATE cust_calls SET user_id=USER WHERE customer_num=220

USER函数不改变用户ID的大小写。

DBSERVERNAME 和SITENAME函数

DBSERVERNAME函数返回当前数据库所在安装的ONCONFIC文件中定义的或INFORMIXSERVER环境变量中指定的数据库服务器名。函数名DBSERVERNAME 和SITENAME是同义词。可以用DBSERVERNAME函数确定表格位置。例:

SELECT DBSERVERNAME FROM customer

TODAY函数

TODAY函数返回DATE数据类型的系统日期。如果指定TODAY为列的默认值,则它应为DATE列。

下例显示如何在INSERT、UPDATE或SELECT语句中使用TODAY函数:

UPDATE orders(order_date) SET order_date=TODAY

WHERE order_num=1005

CURRENT函数

CURRENT函数返回当前的日期和时间值。

如果不指定日期时间限定符,则默认限定符为YEAR TO FRACTION(3)。任何可以使用直接数DATETIME的语境中都可以使用CURRENT函数。如果指定CURRNET为列的默认值,则它应为DATETIME列,CURRENT的限定符应符合列限定符,如下例所示:

CREATE TABLE new_acct(

col1 int,

col2 DATETIME YEAR TO DAY DEFAULT CURRENT YEAR TO DAY)

insert into test (a,b,c,e,f,g) values ("abc",current,1234567890,34.5,33,350.22)

DELETE FROM cust_calls

WHERE Res_dtime

SELETE *FROM orders WHERE DAY (ord_date)

SELETE* FROM cust_calls

WHERE call_dtime BETWEEN ‘1997-1-1 00:00:00’AND CURRENT

DATETIME

下例显示直接数DATETIME表达式: (表达式不能以DATE值的引号字符串来表示。)

SELECT DATETIME(1997-12-6)YEAR TODAY FROM customer

UPDATE cust_calls SET res_dtime=DATETIME(1998-07-07 10:40)YEAR TO MINUTE

WHERE customer_num=110

AND call_dtime=DATETIME(1998-07-07 10:40) YEAR TO MINUTE

COLUMN

下列演示列表达式:

company

cat_advert [1,15]

在不同表中,用表或别名区别具有相同名称的列。如下例中的SELECT语句演示custormer和order表中的customer_num。第一例处理表名和例名;第二例处理表的别名和列名。

SELECT *FROM customer,orders

Where customer,customer_num=orders,customer_num

SELECT * FROM customer c, orders o

Where er_num=er_num

Concatonation 运算符

可用连接字符(||)连接表达式。例如,下例是一些可能的连接表达式组合。

select '('||a[1,2]||')'||a[3,7],b,c,e,f,g from test

DECODE函数

语法:DECODE(expr, when_expr, then_expr, else_expr)

用法:

表达式expr、 then_expr和 when_expr是必需的。DECODE求值expr并将其

when_expr比较。如果when_expr的值符合expr值。则DECODE返回then_expr。

表达式then_expr和 when_expr是一对表达式,DECODE中可以指定任何表达式对。

在所有情况下,DECODE比较表达式对的第一个成员和expr,并在第一个成员符合expr时

返回对中的第二个成员。

如果没有符合expr的表达式,则DECODE返回else_expr。但如果任何表达式都不符

合expr,且用户没有指定else_expr,则DECODE返回NULL。

假设有一张Students表

Firstname

Edward

Joe

Mary

Jim

Evaluation

Great

Null

Very Good

Poor

用户要将Evaluation列中的描述性数值变为具体的数字值,于是输入带DECODE函数的SELECT语句:

SELECT

Firstname ,

DECODE(Evaluation,

‘Poor’ , 0,

‘Fair ’ , 25,

‘Good’, 50,

‘Very Good’, 75,

‘Great’, 100,

-1) as Grade

FROM Students

下表显示这个SELECT语句的输出:

Firstname

Edward

Joe

Mary

Jim

Grade

100

-1

75

0

EXP函数

语法:EXP函数属于指数与对数函数类型

EXP(float_expression)

元素 用途 限制 语法

float_expression EXP、LOGN或LOGN10函数变元表达式

表达式的定义域为一组实表达式

数,表达式的范围为正实数

用法:

下例对angles表中每一行返回3的指数:

SELECT EXP(3) FROM

angles

对这个函数,底数总是e,是自然对数的底数,例如:

e = exp(1) = 2.7

底数使用自然数的底数值时,用EXP函数,而要指定特定值产生指定幂时,参见”POW函数”一节。

EXTEND函数

语法:

EXTEND(date/dtime_expr, first TO last)

元 素 用 途 限 制 语 法

表达式 date/dtime_expr 作为下列函数变元的表达式:DAY、表达式应求值为DATE或MONTH、WEEKDAY、YEAR和DATETIME型

EXTEND

first 指定结果中第一个字段的限定符 大于last的任何DATETIME字段限定符

last 指定结果中最后一个字段的限定符 小于first的任何DATETIME字段限定符

DATETIME字段限定符

DATETIME字段限定符

用法:

EXTEND函数调整DATETIME或DATE值的精度。表达式不能以DATE值的引号字符串来表示。

如果不指定first 和last限定符,则默认限定符为YEAR TO FRACTION(3)。如果表达式包含不是限定符指定的字段,则该字段放弃。

如果first限定符比表达式中现有字段更大(即更重要)的字段,则新字段填上

CURRENT函数返回的值。如果last限定符指定比表达式中现有字段较小(即不重要)的字段,则新字段填上常量值。默认MONTH或DAY字段填上1,默认HOUR到FRACTION字段填上0。

下例中,第一个EXTEND调用求值为YEAR TO SECOND的call_dtime列值。第二个语句扩展直接数DATETIME,使其可以减去间隔值。要用EXTEND函数和DATETIME值将其从没有全部相同限定符的INTERVAL值增加或减少。第三个实例只更新日期时间值的时间部分。EXTEND函数只得到日期时间值的hh:mm部分。从日期时间值的时和分减去11:00得到相差INTERVAL值(正或负),从源值减去这个值得到数值11:00。

EXTEND(call_dtime,YEAR TO SECOND)

EXTEND(DATETIME(1989-8-1) YEAR TO DAY, YEAR TO MINUTE)

-INTERVAL(720) MINUTE(3) TO MINUTE

UPDATE

cust_calls

SET

call_dtime=call_dtime

(EXTEND(call_dtime,

HOUR TO MINUTE) -DATETIME(11:00) HOUR TO MINUTE)

WHERE

customer_num = 106

FILETOBLOB函数和FILETOCLOB函数

语法:这两种函数都属于智能大型对象函数,语法格式相同。下面就FILETOBLOB进行说明。

FILETOBLOB(pathname, file_destinaton, table, column)

元素

column

用途 限制

这个列应为CLOB或BLOB数据类型

只能取server或client

路径名应在文件目录所指定的计算机上存在

表格应在数据库中存在,并包含CLOB或BLOB列

语法

引号字符串

引号字符串

引号字符串

引号字符串

BLOB或CLOB值备份,使用其存储特性的表格列名。

file_destination 读写智能大型对象的计算机字符串

pathname 定位智能大型对象的目录路径和文件名

table BLOB或CLOB值备份,使用其存储特性的表格列名所在的表名。

用法:

CLOB和BLOB函数用下列参数确定使用的操作系统文件:

■ pathname参数确定源文件路径和名称。

■ file_destination参数确定文件所在的计算机为服务器或客户端

□ 将file_destination设置为client表示源文件在客户机上,pathname可用完整路径名。

□ 将file_destination设置server表示源文件在服务器上,pathname必须用完整路径名。

table和column参数是可选项:

■如果省略table和column,则FILETOBLOB函数生成系统指定存储默认的BLOB值,而FILETOCLOB函数生成系统指定存储默认的CLOB值。这些函数从ONCONFIG文件或sbspace取得系统指定存储特性。关于系统指定存储默认的信息,参见《Aministrator`s Guide》。

■如果指定table和column,则FILETOBLOB函数和FILETOCLOB函数对生成的BLOB和CLOB值使用指定列中的存储特性。

FILETOBLOB函数返回新BLOB值的句柄值(指针);同样,FILETOCLOB函数返回新CLOB值的句柄值(指针)。这些函数并不实际将智能大型对象值存放在数据库的列中。

要对对应列指定BLOB或CLOB值。

FILETOBLOB函数进行将文件从客户机或服务器复制到数据库中所需的任何代码集转换工作。

下列INSERT语句用FILETOCLOB函数从文件中的值生成CLOB值:

INSERT INTO

candidate (cand_num,cand_lname,resume)

VALUES(0,’Haven’,

FILETOCLOB(‘’,’client’)

上例中,FILETOCLOB函数将文件读取到客户机计算机的当前目录,然后返回包含这个文件中数据的CLOB列的句柄值。由于FILETOCLOB函数不指定表名和列名,因此这个新的CLOB值使用系统指定存储特性。然后INSERT语句将这个CLOB值赋予candidate表的resume列。

HEX函数

语法:

HEX(int_expression)

用法:下例按十六进制格式显示orders表列的数据类型和列长。对MONEY和DECIMAL列,可以从最低和次低字节确定精度和比例。对VARCHAR和NVARCHAR列,可以从最低和次低字节确定最小空间和最大空间。

SELECT

colname, coltype,

HEX(collength)

FROM

syscolumns

C,

systables T

WHERE C.

tabid = T.

tabid

AND T.

tabname =’orders ‘

HEX函数可以处理任何表达式,例如:

SELECT HEX(order_num+1) FROM

orders

IFX_ALLOW_NEWLINE函数

语法:IFX_ALLOW_NEWLINE(’t’或’f’)

如果这个函数输入变元’t’,则对话中引号字符串允许有新行符。如果这个函数输入变元’f’,则对话中引号字符串允许有新行符。

用法:

可以通过设置ONCONFIG文件中的ALLOW_NEWLINE参数对所有的对话设置新行

方式,设置为0为不允许有新行符,设置为1为允许有新行符。如果不设置这个配置参数,

则默认值为0。每次开始对话时,新对话继承ONCONFIG文件中的新行方式设置。要改变

对话的新行方式设置,执行IFX_ALLOW_NEWLINE函数。设置后,这个方式一直有效,

直到对话结束或在对话中再次执行IFX_ALLOW_NEWLINE函数为止。

下例中,假设没有设置ONCONFIG文件中的ALLOW_NEWLINE参数,因此默认

新行符在对话中的引号字符串中不允许。开始新对话后,可以执行IFX_ALLOW_NEWLINE

函数在该对话的引号字符串中允许有新行符:

设置ONCONFIG文件中的ALLOW_NEWLINE参数或执行IFX_ALLOW_NEWLINE

函数而设置的新行方式, 只适用于SQL语句中引号字符串直接数,而不适用于SQL语句宿

主变量中的引号字符串。不管当前新行方式如何,宿主变量中的引号字符串中总是可以包含

新行符。例如,如果ONCONFIG文件的ALLOW_NEWLINE参数设置为0,则仍然可以用

宿主变量再列中插入包含新行符的数据。

IPX_REPLACE_MODULE函数

语法:

IPX_REPLACE_MODULE(old_module, new_module, “C”)

元素

new_module

old_module

用途

代替old_module所指定共享库完整路径名

用new_module指定的共享库代替共享库的完整路径名

限制

指定路径名的共享库应存在

指定路径名的共享库应存在

语法

引号字符串

引号字符串

用法:

IPX_REPLACE_MODULE函数返回表示更新状态的整数值如下:

■ 0表示成功

■ 负数表示错误

例如,要将/usr/apps/opaque_types目录中的共享库换成/usr/apps/shared_libs目录中

的共享库, 用下列EXECUTE FUNCTION语句执行IPX_REPLACE_MODULE

函数:

EXECUTE FUNCTION

Ifx_replace_module(“/usr/apps/opaque_types/”,

“/usr/apps/shared_libs/”,”c”)

例如,要将C:usrappsopaque_types目录中的共享库换成C:usrappsshared_libs目

录中的共享库,用下列EXECUTE FUNCTION语句执行IPX_REPLACE_MODULE

函数:

EXECUTE FUNCTION

Ifx_replace_module(“C:usrappsopaque_”,

“C:usrappsshared_”,”c”)

要在Informix ESQL/C应用程序中执行,就要将函数与临时表相关联。

INITCAP函数

语法:

INITCAP(source_expression)

用法:

source_expression的输入类型应为字符数据类型。描述列时,数据库服务器返回的数据类型应与输入类型相同。例如,如果输入类型为CHAR,则输出类型也是CHAR。INITCAP函数返回source_expression的备份,并将source_expression中的每个单词变成以大写字母开始,

大小写转换函数描述返回的字节长度是源字符串的输入字节长度。

如果source_expression为NULL, 则大小写转换函数的结果也是NULL。

SELECT

city LOWER(city), LOWER(“city”), UPPER(city), INITCAP(city)

FORM Weather;

LOCOPY函数

语法:

LOCOPY(BLOB_column或CLOB_column, table,column)

元素 用途 限制

如果指定table和column,则BLOB列应在该表中存在

如果指定table和column,则BLOB列应在该表中存在

这个列应为CLOB或BLOB语法

标示符

标示符

引号字符串

BLOB_column BLOB类型的列名

CLOB_column CLOB类型的列名

column BLOB或CLOB值备份,使

table

用其存储特性的表格列名。 数据类型

BLOB或CLOB值备份,使表格应在数据库中存在,并包用其存储特性的表格列名含CLOB或BLOB列

所在的表名。

引号字符串

用法:

LOCOPY函数的第一个参数指定要复制的BLOB或CLOB列。Table和column参数是

可选的:

■ 如果省略table和column,则LOCOPY函数生成系统指定存贮默认的智能大型对象,并将BLOB或CLOB列的数据复制到其中

■ 如果指定table和column,则LOCOPY函数对生成的BLOB或CLOB值使用指定列中的存储特性。

LOCOPY函数返回新BLOB值的句柄值(指针)。这些函数并不实际将智能大型对象值

存放在数据库的列中。要对相应列指定BLOB或CLOB值。

下列ESQL/C代码分段将candidate表resume列复制到interview表resume列中:

EXEC SQL

insert into interviews(intrv_num,intrv_time)

values(0, ‘9:30’);

intrv_num = d[1];

EXEC SQL pdate interviews

SET(cand_num, resume) =

(SELECT

cand_num,

LOCOPY(resume, ‘candidate’, ‘resume’)

FROM

candidate

WHERE

cand_lname = ‘haven’)

WHERE

intrv_num = :intrv_num;

上例中,LOCOPY函数返回candidate表中resume列的备份的句柄值。由于LOCOPY函数指定表名和列名,这个新的CLOB值具有这个resume列的存储特性。如果省略表名candidate和列名resume,则LOCOPY函数对新的CLOB值使用系统指定存储默认。然后UPDATE语句将这个新的CLOB值赋予interview表的resume列。

LOGN函数

语法:

LOGN(float_expression)

元素 用途 限制 语法

float_expression EXP、LOGN或LOGN10函数变元表达式

表达式的定义域为一组实表达式

数,表达式的范围为正实数

用法:

下例的SELECT语句返回history表中每一行的人口的自然对数:

SELECT LOGN(population)

FROM

history

WHERE

country = ‘US’

ORDER BY

date

LOGN10函数

语法:同LOGN函数

用法:下例对travel表的每一行返回底数为10的对数:

SELECT LOGN(distance) + 1 digits

FROM

travel

LOTOFILE函数

语法:

LOTOFILE(BLOB_column或CLOB_column, pathname, file_destinaton)

元素 用途 限制

如果指定table和column,则BLOB列应在该表中存在

如果指定table和column,则BLOB列应在该表中存在

只能取server或client

路径名应在文件目录所指定的计算机上存在

语法

标示符

标示符

引号字符串

引号字符串

BLOB_column BLOB类型的列名

CLOB_column CLOB类型的列名

file_destination 读写智能大型对象的计算机字符串

pathname 定位智能大型对象的目录路径和文件名

用法:

第一个参数指定要复制的BLOB或CLOB列。该函数用下列参数确定要生成的操作系统文件:

■ pathname参数确定源文件路径和名称。

■ file_destination参数确定文件所在的计算机为服务器或客户端

□ 将file_destination设置为client表示源文件在客户机上,pathname可用完整路径名。

□ 将file_destination设置server表示源文件在服务器上,pathname必须用完整路径名。

默认情况下,LOTOFILE函数产生如下形式的文件名: _id

在这种格式中,file是pathname中指定的文件名,hex_id是唯一十六进制智能大型对象标识

符。智能大型对象标识符的最大位数为17,但大多数智能大型对象标识符的标识符位数少得多。

例如,假设指定pathname值如下: ‘/tem/resume’

如果CLOB列的智能大型对象标识符为203b2, 则LOTOFILE函数生成文件:

tem/resume. 203b2

例如,假设指定pathname值如下: ‘C:temresume’

如果CLOB列的智能大型对象标识符为203b2,则LOTOFILE函数生成文件:

C: emresume. 203b2

要改变默认文件名,可以在pathname的文件名中指定下列通配符:

■ 文件名中的一个或几个连续问号(?)可产生唯一文件名

LOTOFILE函数将每个问号换成BLOB或CLOB列标识符中的十六进制数。

例如,假设指定pathname值如下:’/tmp/resume??.txt’

则LOTOFILE函数在名称中加上十六进制标识符的2位数。如果CLOB列的

智能大型对象标识符为203b2, 则LOTOFILE函数生成文件:/tmp/

如果指定的问号超过17个,则LOTOFILE函数将其忽略。

■ 文件名末尾的感叹号(!)表示该文件名不需要唯一

例如,假设指定路径名值如下:’C:!’

LOTOFILE函数不在文件名中使用智能大型对象标识符,因此产生下列文件:

C:

如果指定的文件已经存在,则LOTOFILE返回错误。

LOTOFILE函数进行将文件从客户机或数据库复制到服务器中所需的任何代码集转换。

LOWER函数

语法:

LOWER(source_expression)

同INITCAP函数

用法:

LOWER函数返回source_expression的备份,并将source_expression中的每个大写字母换成对应的小写字母。

LPAD(源字符串,长度,嵌入字符串)

说明:左嵌入函数。长度指源字符串和嵌入字符串的总长度

用法:

SELECT LPAD(‘Here we are’,16,’-_’)

FROM mytable

结果:-_-_-Here we are

RPAD(源字符串,长度,嵌入字符串)

说明:右嵌入函数。长度指源字符串和嵌入字符串的总长度

用法:

SELECT RPAD(‘Here we are’,16,’-_’)

FROM mytable

结果:Here we are-_-_-

MAX(数字列|数字表达式)

说明:求最大值函数。| 表示或

统计函数中的数字表达式不能含有统计函数, 如MAX(AVG(数字列))是错误的用法,统计函数不能出现在WHERE子句中。

用法:SELECT MAX(unit_price)

FROM stock

MIN(数字列|数字表达式)

说明:求最小值函数。

统计函数中的数字表达式不能含有统计函数, 如MIN(AVG(数字列))是错误的用法,统计函数不能出现在WHERE子句中。

用法:SELECT MIN(unit_price)

FROM stock

MDY(expr1,expr2,expr3)

说明:返回expr1,expr2,expr3的DATE值,expr1,expr2,expr3均为整型数据,

expr1表示月,expr2表示日,expr3表示年,其中年用4位整数表示。

即 expr1(月)/expr2(日)/expr3(年)

用法:

UPDATE orders

SET paid_date=MDY(MONTH(TODAY),1,YEAR(TODAY))

MOD(被除数,除数)

说明:取模函数

用法:MOD(10,3)=1

MONTH(date/dtime_expr)

说明:返回DATE或DTETIME型日期中月份部分的整数。

用法:SELECT MONTH(order_date)FROM orders

NVL(表达式1,表达式2)

用法:若表达式1不为空,则返回表达式1的值;

若表达式1为空,则返回表达式2的值。

select a,nvl(b,"空"),c,e from test ---若B为NULL则返回"空"

OCTET_LENGTH(变量名|列命)

说明:返回字符列所占的字节数

用法:CREATE TABLE tb1(col CHAR(10))

SELECT OCTET_LENGTH(col) FROM tbl

结果:10

POW(底数,指数)

说明:求底数的指数次方。

用法:POW(3,4)=81

RANGE(数字列|数字表达式)

说明:RANGE=MAX-MIN

用法:SELECT RANGE (age) FROM u_pop

REPLACE(源字符串,匹配字符串,新字符串)

说明:此函数的3个参数可以是任何能转换成字符型的数据类型。

用法:SELECT REPLACE(‘Mighxyz xztime’,’xz’,’t’)

FROM mytable

结果:Mighty time

ROOT(被开方数,指数)

说明:被开方数开指数次方。指数!=0

用法:ROOT(32,5)=2

ROUND(数字表达式,圆整系数)

说明:四舍五入函数,圆整系数指明第几位,正数在小右边,负数在小数左边.

数字格式:24536.8746

-2 0 2

用法:ROUND(24536.8746,-2)=24500.00

ROUND(24536.8746,0)=24537.00

ROUND(24536.8746,2)=24536.87

SIN(弧度)

用法:SELECT SIN(radians) FROM anglestbl

SITENAME

说明:返回数据库服务器的名字。

用法:同DBSERVERNAME

STDEV(数字列)

说明:标准差函数

用法:SELECT STDEV (age) FROM u_pop

SUBSTR(源字符串,开始位置,长度)

说明:取子字符串函数,长度指在源字符串中截取的字符数

用法:SUBSTR(‘ABCDE’,2,3)=’BCD’

SUBSTR(‘ABCDE’,0’,3)=’AB’

SUBSTR(‘ABCDE’,-1)=’E’ 负数表示从末尾向前截取

SUBSTR(‘ABCDEFG’,-3)=’EFG’

SUBSTRING(源字符串FROM开始位置FOR长度)

SUBSTRING(‘ABCDEFG’ FROM –3 FOR 7)=’ABC’ 负数表示从其绝对值向前截取

SUM(数字列|数字表达式)

说明:求和函数

用法:SELECT SUM(unit_price) FROM stock

TAN(弧度)

用法:SELECT TAN(radians) FROM anglestbl

TO_CHAR(DATE|DATETIME,格式字符串)

说明:此函数的作用是按格式字符串指定的格式把DATA、DATETIME型数据转换成子

符型

格式字符串 意义

%A 星期

%B 月份

%D 日期

%Y 年份(4为数字)

%R 时间(精确到分)

select to_char(current,'%Y%m%d%H%M%S'),current from systables where tabid=1

将日期转换成:YYYYMMDDHHMMSS (年月日时分秒)格式

用法:SELECT TO_CHAR(begin_date,’%A %B %D, %Y %R’)

FROM tab1

结果:Wednesday July 23, 1997 18:45

TO_DATE(字符表达式,格式字符串)

说明:此函数功能与TO_CHAR相反,用法类似。

用法: UPDATE tab1

SET begin_date=TO_DATE(‘Wednesday July 23, 1997 18:45’,’%A %B %D, %Y

%R’);

TODAY

说明:返回DATE型系统时间。

用法:SELECT * FROM orders WHERE ship_date=TODAY

TRIM([LEADING|TRAILING|BOTH] trim_expr FROM source_expr)

说明:此函数的作用是从source_expr中删去与trim_expr中相匹配的字符。

LEADING 删除字符串的左端匹配的字符

TRAILING 删除字符串的右端匹配的字符

BOTH 为默认的参数,意为LEADING和TRAILING

用法:souce_expr=’##A2T##^^^’

SELECT TRIM(LEADING ‘#’ FROM sour_expr)

FROM taba

结果:A2T##^^^^^ ^表示空格

SELECT TRIM(BOTH ‘#’ FROM sour_expr)

FROM taba

结果:A2T##^^^^^

因为A2T两端的字符不对称。此时BOTH的作用与了LEADING作用

相同。

TRUNC(表达式,截去系数)

说明:截取函数。+号表示小数点右边的数字,-号表示小数点左边的数字

用法:TRUNC(24536.8746,-2)=24500

TRUNC(24536.8746,0)=24536

TRUNC(24536.8746,2)=24536.87

截去系数默认为0

UPPER(源字符串)

说明:将源字符串全部转换为大写。

用法:SELECT * FROM employees WHERE UPPER(lname)=”ASD”

VARIANCE(数字列)

说明:方差函数。

用法:SELECT VARIANCE(age) FROM u_pop

WEEKDAY(date|dtime_expr)

说明:返回DATE或DTETIME型日期中星期部分的整数。(从0到6)

用法:SELECT WEEKDAY(order_date)FROM orders

YEAR(date|dtime_expr)

说明:返回DATE或DTETIME型日期中年份部分的整数。(4位数字)

用法:SELECT YEAR(order_date) FROM orders


本文标签: 函数 表达式 返回 字符串 指定