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类型值 |