X
首页 SQL优化 esql/c 介绍
esql/c 介绍
ESQL/C的数据类型
一、 
1、SQL与C数据类型的对应 
简单类型 
SQL C 
CHAR(n) char(n+1) 
CHARCTER(n) char * 
SMALLINT short int 
INTERGER 
INT long int 
SMALLFLOAT 
REAL float 
FLOAT 
DOUBLE PRECISIONdouble 
SERIAL long int 
DATE long int 
复杂类型 
SQL C 
DECIMAL 
DEC NUMERIC dec_t or struct decimal 
MONEY dec_t or struct decimal 
DATETIME dtime_t or struct dtime 
INREVER intrvl_t or struct intrvl 
VARCHAR varchar or string 

2、数据类型转换 

转换类型 转换后 
FLOAT DECIMAL(16) 
SMALLFLOAT DECIMAL(8) 
INTERGER DECIMAL(10,0) 
SAMLLINT DECIMAL(5,0) 

二、数据类型的转换函数 
(一)有关CHAR类型的函数 
1、以空值结尾的串的操作函数 
rdownshift(char *s) 把一个字符串中的所有字母转换成小写形式。 
rupshift(char *s) 把一个字符串中的所有字母转换成大写形式。 
stcat(char *s, char *dest) 把一个字符串同另一个字符串相连接。 
stcmpr(char *s1, char *s2) 比较两个字符串。 
stcopy(char *from, char *to) 把一个字符串拷贝到另一个字符串。 
stleng(char *string) 统计字符串的长度。 
<

5、INTERVAL转换函数 
incvasc(char *from, intrvl_t *to)把ANSI兼容的字符串转换为INTERVAL值 
incvfmtasc(char *from, char *fmt, intrvl_t *to) 把格式化的字符串转换为INTERVAL值。 
intoasc(char *from, intrvl_t *to) 
intofmtasc(char *from, intrvl_t *to, int len, char *fmt) 

6、提供DATETIME和INTERVAL算术操作的函数 
rdtaddinv(dec_t *dt, int dg, dec_t *in, int iq, dec_t *sum) 把一个INTERVAL值加到一个DATETIME值上。 
rdtsub(det_t *dt2, int dq2, dec_t *dt1, int dq1, dec_t *dt0, int dq0) 求两个DATETIME值的差。 

7、DATE类型和DATETIME类型之间的转换 
DATE→DATETIME 
;定义一个带有修饰符“year to day”的DATETIME变量 
;使用rfmtdate()函数把DATE值转换为一个字符串,使用的模板是yyyy-mm-dd 
;使用dtcvasc()函数把字符串转换成DATETIME类型变量的值。 
;如果需要的话,可以使用dtextend()函数来调整DATETIME的修饰符。 

DATETIME→DATE 
;使用dtextend()函数把DATETIME的修饰符调整为“year to day”。 
;使用dttoasc()函数以模板yyyy-mm-dd创建一个字符串。 
;使用rdefmtdate()函数以模板yyyy-mm-dd把字符串转换为一个DATE值。 

8、有关DATETIME和INTERVAL值的其他运算 
rinvtodec(dec_t *v, int q, dec_t *dec) 把INTERVAL或DATETIME类型的值转换成DECIMAL类型 
redectoinv(dec_t *dec, dec_t *v, int q) 把DECIMAL值转换成INTERVAL或DATETIME类型值