ESQL-C的数据类型及转换

合集下载

ESQL 资料(完全版)

ESQL 资料(完全版)

ESQL 资料(完全版)esql资料(完全版)esql/c资料(完全版)第六章嵌入式sql(e-sql)概述3第一节什么就是内嵌sql语言?31.1内嵌sql程序的共同组成元素31.2什么就是静态sql和动态sql?41.3什么就是sqlca?41.4什么就是sqlda?5第二节sybasesqlserver嵌入式sql语言52.1一个嵌入sql语言的简单例子52.2嵌入sql的处理过程62.3嵌入sql语句总览72.3.1宿主变量72.3.2连接数据库122.3.3数据的查询和修改132.3.4游标的使用132.3.5sqlca152.3.6whenever162.3.7批处理182.3.8事务182.4动态sql语句182.4.1动态修改192.4.2动态游标202.4.3sqlda23第三节ibmdb2内嵌sql语言353.1一个直观示例353.2内嵌sql语句373.2.1宿主变量373.2.2单行查阅393.2.3多行查阅393.2.4插入、删除和修改操作403.2.5sqlca433.2.6事务453.3db2的内嵌sql程序处理过程463.4db2的动态sql内嵌语句533.4.1基本方法533.4.2动态游标553.4.3sqlda55第四节oracle数据库的嵌入sql语言664.1基本的sql语句664.1.1宿主变量和命令符令664.1.2查阅684.1.3修正数据684.1.4游标684.2内嵌pl/sql714.3动态sql语句724.3.1oracle动态sql语句的一些特点724.3.2使用动态sql的四种方法724.3.3sqlda75第五节informix的内嵌sql/c语言895.1一个直观的入门例子895.2宿主变量915.3嵌入sql的处理过程965.4动态sql语言965.4.1sqlda97第六节microsoftsqlserver7嵌入式sql语言1056.1一个内嵌sql语言的直观例子1056.2内嵌sql的处理过程1066.3内嵌sql语句1126.3.1声明嵌入sql语句中使用的c变量1126.3.2连接数据库1156.3.3数据的查询和修改1156.3.4游标的使用1166.3.5sqlca1176.3.6whenever1186.4动态sql语句1196.4.1动态修改1196.4.2动态游标1206.4.3sqlda1226.4.4describe语句1306.5api130第六章嵌入式sql(e-sql)简介第一节什么是嵌入sql语言?sql就是一种双重式语言,它既是一种用作查阅和更新的交互式数据库语言,又就是一种应用程序展开数据库出访时所实行的编程式数据库语言。

SQL与C数据类型的对应

SQL与C数据类型的对应
rjulmdy(long jdate, short mdy[3]) 从一个内部日期生成一个含有3个短整数的数组对应内部日期的月、日、年。
rdatestr(long jdate, char *str) 从一个内部日期值创建缺省的日期字符串。
rdayofweek(long jdate) 给定一内部格式表示的日期,此函数返回所对应的星期中的某一天。
rfmtdec(dec_t *from, char *format, char *to) 将DECIMAL值转换成格式化的字符串。
3、DECIMAL函数——把DECIMAL值转换成数值型
dectoint(dec_t *from, int *to);
dectolong(dec_t *from, long *to);
“dd-mm-yy” “This 25th day of December, 1997”
rmdyjul(short mdy[3], long *jdate) 用三个短整数生成一个内部日期这三个整数是有关年、月、日的数字值。(年必须以完整的形式表达)
返回代码:
0操作成功。
返回值:
-1dec1<dec2
0dec1=dec2
1dec1>dec2
DECUNKNOW有一个是空值
deccopy(dec_t *dec1, dec_t *dec2);
decround(dec_t *dec1, int scale);
dectodbl(dec_t *from, double *to)
4、DECIMAL函数——算术运算
decadd(dec_t *op1, dec_t *op2, dec_t *result);

sql中的数字变字符串类型

sql中的数字变字符串类型

sql中的数字变字符串类型
在SQL中,将数字转换为字符串类型可以通过不同的方法实现。

下面我将介绍几种常见的方法:
1. 使用CAST或CONVERT函数:
在SQL中,可以使用CAST或CONVERT函数将数字转换为字
符串类型。

例如,如果我们有一个数字列num,我们可以使用以下
语句将其转换为字符串类型:
SELECT CAST(num AS VARCHAR(10)) AS num_str.
FROM table_name;
或者。

SELECT CONVERT(VARCHAR(10), num) AS num_str.
FROM table_name;
2. 使用字符串连接符:
另一种常见的方法是使用字符串连接符将数字转换为字符串
类型。

在大多数SQL数据库中,可以使用加号"+"来实现字符串连接。

例如:
SELECT num + '' AS num_str.
FROM table_name;
3. 使用字符串函数:
一些SQL数据库还提供了特定的字符串函数来将数字转换为
字符串类型。

例如,在MySQL中,可以使用函数如下:
SELECT CONCAT(num, '') AS num_str.
FROM table_name;
无论使用哪种方法,都可以将数字转换为字符串类型。

选择方
法取决于所使用的数据库以及个人偏好。

希望这些方法能够帮助你
将数字转换为字符串类型。

ESQLC-To-PROC应用移植指南

ESQLC-To-PROC应用移植指南

ESQLC-To-PROC应用移植指南ESQL/CtoPROC应用移植方案OracleChina目录一、程序结构 4对预编译器的处理 4对informix特有头文件的处理 4 对条件编译语句的处理 4对字符串宏定义的处理 5对结构字段宏定义的处理 5对头文件重复包含的处理 6 $和EXECSQL 6二、EXEC语句 7DDL语句 7对事务的处理 7对withhold和withnolog的处理 7对lockmode的处理 8对first的处理 8对match的处理 9对into语句的处理 10对临时表的处理 10对双引号和[]的处理 11对SQL操作返回值和字段Null判断的处理 11对ROWID的处理 12对同时选取字段名和的处理 12有关UPDATE的处理 13关于插入游标的处理 13关于DECLARECURSOR后的错误处理 14对释放游标的处理 14关于SQL语句宿主变量的注意之处,字符串[]、where语句== 14UNIQUE改为DISTINCT 16SQL语句中宏的处理 16关于动态SQL语句中USING和结束分号语句的处理 17 关于Serial类型的处理 18关于BYTE类型的处理 18关于dec_t类型的处理 22对fork的处理 22对//注释的处理 22关于for循环的处理 22关于取数据库记录要去空格的问题 23连续Case语句不能太多的问题 23定义函数时使用${,$}问题 23三、错误代码 23对sqlca的处理 23对原错误码判断的处理 24错误码-1480原因和解决方法 25错误码-1400原因和解决方法 25错误码-1002原因和解决方法 26DELETE语句错误码判断问题 27UPDATE语句错误码判断问题 28四、库函数 29五、其他问题 29一、程序结构对预编译器的处理Informix的预编译器:$INFORMIXDIR/bin/esql,头文件目录:$INFORMIXDIR/incl/esql库文件目录:$INFORMIXDIR/lib:$INFORMIXDIR/lib/esqlOracle的预编译器:proc头文件目录:$ORACLE_HOME/precomp/public库文件目录:$ORACLE_HOME/lib对informix特有头文件的处理移植处理内容:EXECSQLincludesqlstype;EXECSQLincludesqltypes;EXECSQLincludedecimal;EXECSQLincludelocator;EXECSQLincludesqlhdr;处理方法:这些头文件是INFORMIX中特有的,Oracle中不存在。

ESQL 概述

ESQL 概述

DAY TO HOUR DAY TO SECOND HO SECOND
所有这些子类型均描述时间间隔,并且全部可参与 INTERVAL 类型的整个操 作;例如,用类型 DATE、TIME 或 TIMESTAMP 的值执行添加和抽取操作。 时间间隔字面值由以下语法定义: INTERVAL <interval string> <interval qualifier>
3
WebSphere Message Broker | September 2005
© 2005 IBM Corporation
ESQL Enhancements Part 1
ESQL 数据类型
4
WebSphere Message Broker | September 2005
© 2005 IBM Corporation

5
WebSphere Message Broker | September 2005
© 2005 IBM Corporation
ESQL Enhancements Part 1
ESQL BOOLEAN 数据类型
BOOLEAN 数据类型保存可拥有以下值的布尔值: TRUE FALSE UNKNOWN 布尔文字由关键字 TRUE、FALSE 和 UNKNOWN 组成。它们能以大写或小 写的形式出现。
11
WebSphere Message Broker | September 2005
© 2005 IBM Corporation
ESQL Enhancements Part 1
ESQL 日期时间数据类型_INTERVAL
12
WebSphere Message Broker | September 2005

11.ESQL/C程序中使用DECIMAL数据类型

11.ESQL/C程序中使用DECIMAL数据类型

第十一章ESQL/C程序中使用DECIMAL数据类型融本章介绍DECIMAL数据类型的概貌,并给出了几个使用该类型的例子。

学完本章,你将能够:●知道把宿主变量定义为C的何种数据类型,来存放SQL数据类型DECIMAL的值。

●理解该数据类型的存储要求。

●使用ESQL/C的库函数把数据转换成DECIMAL类型或从DECIMAL类型转换成别的类型。

DECIMAL值:●依赖于机器●可以多达32为有效数字●可以有小数点,或没有●可以有范围在-128到+126之间的指数象下面这样定义DECIMAL字段:ColumnName DECIMAL[ ( m [ , n ] ) ]这里,m是精度(有效数字的数目),n是有效位数(小数点右边的数字的位数)。

在定义时,省略有效位数,则是浮点DECIMAL类型;声明有效位数,则是定点DECIMAL。

SQL的MONEY类型值以定点DECIMAL类型存储,ESQL/C不区分MONEY类型值和DECIMAL类型值;两者都是DECIMAL。

同样,DATETIME和INTERVAL类型都有一个DECIMAL部分。

融为使用DECIMAL类型,在代码中包含进来头文件decimal.h。

$include decimal;定义在decimal.h文件中的dec_t结构存放这些值:dec_exp 数字的指数,基数是100dec_pos 数字的符号:1 当它大于或等于00 当它小于0-1 当它是空值dec_ndgts 有效数字的数目,基数是100dec_dgts 实际的有效数字,基数是100当操作DECIMAL类型的时候,应当使用ESQL/C库中提供的DECIMAL函数,将在后续页中讨论它们。

任何其它的操作、修改或分析可能导致不可预测的结果。

融在ESQL/C库中有四个函数可以把C的数据类型转换成DECIMAL 值:deccvasc(from,len,to) 把ASCII字符串转换成DECIMAL值。

postgresql数据类型转换

postgresql数据类型转换

postgresql 数据类型转换,日期操作函数各种数据类型(日期/时间、integer、floating point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型。

下面列出了这些函数,它们都遵循一个公共的调用习惯:第一个参数是待格式化的值,而第二个是定义输出或输出格式的模板。

postgresql 字符串转整数int、integer postgresql 字符串转整数int、integercode1 2 3 4 5 6 7 --把'1234'转成整数select cast('1234'as integer) ;--用substring截取字符串,从第8个字符开始截取2个字符:结果是12select cast(substring('1234abc12',8,2) as integer)---使用to_number函数来转换成整数---to_number(text, text) 返回的类型 numeric 把字串转换成numeric to_number('12,454.8-', '99G999D9S')select to_number('12121','999999999')用于数值格式化的模板模式:模式描述9 带有指定数值位数的值0 带前导零的值.(句点) 小数点,(逗号) 分组(千)分隔符PR 尖括号内负值S 带符号的数值L 货币符号D 小数点G 分组分隔符MI 在指明的位置的负号(如果数字< 0)PL 在指明的位置的正号(如果数字> 0)SG 在指明的位置的正/负号postgresql 获取当前时间,操作当前时间current_date 今天的日期例子:sql:select current_dateresult:"2012-12-17"current_time 现在的时间例子:sql:select current_timeresult:"18:16:09.984+08"current_timestamp 日期和时间例子:sql:select current_timestampresult:"2012-12-17 18:17:03.015+08"postgresql windows下修改帐号密码(图文)重新设置postgres用户的密码方法:1、关闭数据库服务2、进入数据库的工作空间目录(如果是建库是没有另外指定,应该就是postgresql 安装目录下的data 目录)3、编辑修改文件pg_hba.conf,把连接权限设置的md5 加密方式改成trust以我的为例,原本设置是# IPv4 local connections:host all all 127.0.0.1/32 md5修改为# IPv4 local connections:host all all 127.0.0.1/32 trust4、重新新启动postgresql数据库服务5、可以不用密码就能用postgres用户登陆,然后执行修改用户密码的操作alter user postgres with password 'foobar';6、修改pg_hba.conf 文件,改回到md5 方式,再重启数据库服务设置完成。

Informix_ESQLC编程

Informix_ESQLC编程

第1章INFORMIX ESQL/C 程序开发1.1概述INFORMIX ESQL/C是数据库应用程序开发工具之一,它以它独有的灵活性、易学易用性,在众多数据库应用程序开发产品中占有一席之地。

●INFORMIX ESQL/C的特点INFORMIX ESQL/C就是在C语言程序中直接嵌入SQL语句,这样做的目的是使得使用C 语言开发应用程序的开发者能方便的访问数据库,开发出满足各种要求的数据库应用程序。

那么,它与其它INFORMIX开发工具比较有什么特点呢?首先,INFORMIX ESQL/C程序的开发没有一个菜单式的开发界面。

如INFROMIX-4GL程序的开发有一个包含屏幕格式、模块、程序各部分编辑、编译及运行的菜单界面。

而INFROMIX ESQL/C是通过编辑工具如vi等来进行编辑的。

其次,INFROMIX ESQL/C开发需要一个预处理器来进行程序的预编译。

INFORMIX ESQL/C 的编译命令是esql,它完成预编译、编译、链接、生成可执行文件的等工作。

预处理器所做的工作是将ESQL/C的代码转换成C的代码,再调用C的编译器来处理C程序代码。

INFORMIX公司对ESQL/C程序的开发有强劲的支持。

在ESQL/C中不仅可以使用INFORMIX 提供的预编译命令,还可调用INFORMIX提供的库函数和头文件。

●设置开发的环境变量要利用INFORMIX ESQL/C提供以上所述的支持,必须在.profile或.login文件中设置有关环境变量:INFORMIXDIR = INFORMIX ESQL/C的安装目录PATH =$INFORMIXDIR/bin:$PATHSQLEXEC = $INFORMIX/lib/sqlrm /*当ESQL/C版本与SERVER版本不同时*/设置好环境变量后,便可以开始INFORMIX ESQL/C编程了。

●ESQL/C程序的编译及运行用vi或其它编辑器编辑ESQL/C程序,ESQL/C的源程序文件名必须以.ec为后缀。

6.在INFORMIX-ESQL/C中使用简单变量

6.在INFORMIX-ESQL/C中使用简单变量

第六章在INFORMIX-ESQL/C中使用简单变量融本章讲解如何使用C变量来保存简单的SQL数据,即字符和数值。

使用C变量来保存复杂的SQL数据将在其它的章节里详细讨论。

下面列出来的是复杂的SQL数据类型:●VARCHAR●DECIMAL 和MONEY●DATETIME 和INTERVAL●BYTE 和TEXT融宿主变量存放SQL数据。

正因如此,必须定义兼容的类型来存放SQL数据。

当数据从内存中写到数据库中时,数据库服务器把数据从C的数据类型转换成SQL的数据类型,当把数据从数据库中读到内存中时,Informix把数据从SQL的数据类型转换成C的数据类型。

由用户负责定义适当类型的宿主变量。

上图列出了SQL的数据类型和C的数据类型之间的隐含的关系。

如果没有象上面这样来定义宿主变量,数据库服务器将尝试自动转换(如果转换有意义的话)。

例如,这里举出了两种这样的情形,数据库服务器试图把一种数据类型转换成另一种类型:●在WHERE字句中,把字符字段同整数相比较,如下:where zipcode > 90000●在算术表达式中不同类型的值一起运算,如下:set unit_price = unit_price * ( 1 + $PercentLf )在这类的表达式中,所有的值在运算之前转换成decimal类型。

融INFORMIX-SQL/C使用DECIMAL类型来进行算术表达式中的所有的运算,由结果变量的类型来决定要存储或打印的结果的格式。

表达式中所有的值,如果不是DECIMAL类型,则转换成DECIMAL 类型,而且,运算的结果是DECIMAL类型。

上图中列出了这类表达式里的值在进行转换后的精度和格式。

如果表达式中的某个值是浮点decimal数,则结果是浮点decimal 数。

当结果类型导致精度丢失时,ESQSL/C返回一个错误。

融当把数据从一种类型转换成另一种类型时,数据库服务器可能会遇到问题,从而产生警告或错误信息。

sql字段转译

sql字段转译

"SQL字段转译" 通常指的是在SQL查询中将字段名称或值从一种格式或编码转换为另一种。

这种转换可能涉及多个方面,包括数据类型转换、字符集转换、日期格式转换等。

以下是一些常见的SQL字段转译示例:数据类型转换:将整数转为浮点数:SELECT CAST(integer_column AS FLOAT) FROM table_name;将字符串转为日期:SELECT CAST(date_string_column AS DATE) FROM table_name;字符集转换:当你从一个字符集迁移到另一个字符集时,可能需要转换数据。

例如,从latin1转为utf8。

日期格式转换:更改日期的显示格式:SELECT DATE_FORMAT(date_column, '%Y-%m-%d') FROM table_name; 别名:使用 AS 关键字为字段或表设置别名,使查询结果更清晰:SELECT first_name AS FirstName, last_name AS LastName FROM users;条件逻辑:使用 CASE 语句根据条件更改字段的值:sql`SELECTcolumn1,CASEWHEN condition1 THEN result1WHEN condition2 THEN result2ELSE result3END AS new_column_nameFROM table_name;`聚合函数:将多个值聚合成一个值,如求和、平均值等:SELECT SUM(amount_column) FROM table_name; 连接:将多个表的字段连接起来:SELECT a.column1, b.column2 FROM table1 a JOIN table2 b ON a.id = b.id;正则表达式:使用正则表达式匹配或替换字段中的值。

例如,在MySQL中,你可以使用 REGEXP 进行匹配。

经典的esql教程

经典的esql教程

第一章 ESQL介绍本章对ESQL做一概括介绍,主要讨论怎么使用ESQL、ESQL的基本的概念和定义、ESQL程序的各个部分和ESQL 程序中语句的类型.SQL语言是非过程化语言,大部分语句的执行与其前面或后面的语句无关,而一些高级编程语言都是基于如循环,条件等结构的过程化语言,尽管SQL语言非常有力,但它却没有过程化能力.若把SQL语言嵌入到过程化的编程语言中,则利用这些结构,程序开发人员就能设计出更加灵活的应用系统,具有SQL语言和高级编程语言的良好特征,它将比单独使用SQL或C语言具有更强的功能和灵活性.COBASE RDBMS提供两种工具在主语言中编程来存取COBASE数据库中的数据.即高级语言预编译程序接口(ESQL)和高级语言的函数调用接口(CCI).目前这些工具仅支持C语言.COBASE RDBMS提供的ESQL工具把含有SQL语句的C程序转化为可存取和操纵COBASE数据库中数据的C程序,作为一编译器,ESQL把输入文件中的EXEC SQL 语句在输出文件中转化为适当的CCI函数调用.输出文件则可以正常的C程序的方式被编译、连接和执行.1.1 ESQL中的基本概念ESQL中的基本概念主要有:1.嵌入的SQL语句:嵌入的SQL语句是指在应用程序中使用的SQL语句.该应用程序称作宿主程序,书写该程序的语言称作宿主语言.嵌入的SQL语句与交互式SQL语句在语法上没有太大的差别,只是嵌入式SQL语句在个别语句上有所扩充.如嵌入式SQL中的SELECT语句增加了INTO子句,以便与宿主语言变量打交道.此外,嵌入式SQL为适合程序设计语言的要求,还增加了许多语句,如游标的定义、打开和关闭语句等等.2.执行性SQL语句和说明性SQL语句:嵌入的SQL语句主要有两种类型:执行性SQL语句和说明性SQL语句.执行性SQL语句可用来连接COBASE,定义、查询和操纵COBASE数据库中的数据,每一执行性语句真正对数据库进行操作 ,执行完成后,在USERCA中存放执行信息.说明性语句用来说明通讯域和SQL语句中用到的变量. 说明性语句不生成执行代码,对USERCA不产生影响.3.事务:事务是逻辑上相关的一组SQL语句.COBASE把它们视作一个单元.为了保持数据库的一致性,一事务内的所有操作要么都做,要么都不做.1.2 ESQL程序的组成和运行在ESQL程序中嵌入的SQL语句以EXEC作为起始标识,语句的结束以";"作为标识.在嵌入的SQL语句可以使用主语言(这时是C语言)的程序变量(即主变量),这时主变量名前加冒号(:)作为标志,以区别于字段名.ESQL程序包括两部分:程序首部和程序体.程序首部定义变量,为ESQL程序做准备, 程序体包括各种SQL语句来操纵COBASE数据库中的数据.编制并运行ESQL程序比单独使用纯C语言多一个预编译过程,通常具有以下几个步骤:1.编辑ESQL程序(可利用编辑软件如: EDLIN, WS等进行编辑).程序保后缀为.ec.2.使用COBASE的预编译器ETE对ESQL源程序进行预处理,该编译器将源程序中嵌入的SQL语言翻译成标准C语言,产生一个C语言编译器能直接进行编译的文件.其文件的扩展名为.cpp。

使用MySQL进行数据类型转换与计算

使用MySQL进行数据类型转换与计算

使用MySQL进行数据类型转换与计算随着互联网的迅猛发展,数据成为了当今社会的宝贵资产。

而对这些数据进行分析和计算,已经成为各行各业的必要工作。

MySQL作为一个广泛应用的关系型数据库管理系统,在处理数据类型转换和计算方面具有一定的特点和技巧,下面将介绍一些使用MySQL进行数据类型转换与计算的技巧和方法。

一、数据类型转换在实际应用中,我们常常需要对不同类型的数据进行转换,以满足不同的需求。

MySQL提供了一些内置的函数来完成数据类型转换的操作。

1.转换为整型当我们需要将一个字符串类型的数据转换为整型时,可以使用MySQL的CAST或CONVERT函数。

例如,我们有一个名为num的字符串变量,其值为"1234",现在我们想将其转换为整形变量int_num,可以使用以下的SQL语句:SELECT CAST(num AS SIGNED) AS int_num;这样,我们就可以将字符串类型的num转换为整型的int_num。

2.转换为浮点型类似地,如果我们需要将一个字符串类型的数据转换为浮点型,可以使用以下的SQL语句:SELECT CAST(num AS DECIMAL(10,2)) AS float_num;这里的DECIMAL(10,2)表示将num转换为最多有10位数字,其中有2位小数的浮点型。

3.转换为日期类型在处理日期时间数据时,我们经常需要将其从字符串类型转换为日期类型。

MySQL提供了STR_TO_DATE函数来实现这个功能。

例如,我们有一个名为date_str的字符串变量,其值为"2022-01-01",现在我们想将其转换为日期类型的date_val,可以使用以下的SQL语句:SELECT STR_TO_DATE(date_str, '%Y-%m-%d') AS date_val;这里的'%Y-%m-%d'表示日期字符串的格式。

如何使用MySQL进行数据类型转换和数据校验

如何使用MySQL进行数据类型转换和数据校验

如何使用MySQL进行数据类型转换和数据校验在日常的数据库操作中,数据类型的转换和数据的校验是非常重要的一环。

MySQL作为一种常用的关系型数据库管理系统,提供了丰富的函数和语法,方便我们进行数据类型转换和数据校验的操作。

下面将通过几个具体的实例,介绍如何使用MySQL进行数据类型转换和数据校验。

一、数据类型转换1. 字符串转换为整数在实际的应用中,有时需要将字符串类型的数据转换为整数类型,以方便进行数值计算或排序。

MySQL提供了CAST()函数和CONVERT()函数,可以实现字符串到整数的转换。

例如,有一个名为students的表,其中有一个列名为age,类型为字符串类型。

现在需要将age转换为整数类型,并按照年龄从小到大进行排序,可以使用如下的SQL语句:SELECT * FROM students ORDER BY CAST(age AS SIGNED) ASC;2. 整数转换为字符串与字符串转换为整数相反,有时需要将整数类型的数据转换为字符串类型。

在MySQL中,可以使用CAST()函数或CONVERT()函数实现整数到字符串的转换。

例如,有一个名为users的表,其中有一个列名为id,类型为整数类型。

现在需要将id转换为字符串类型,并添加前缀"User_",可以使用如下的SQL语句:SELECT CONCAT('User_', CAST(id AS CHAR)) AS user_id FROM users;二、数据校验1. 非空校验在实际的应用中,经常需要对某些字段进行非空校验,以确保数据的完整性。

MySQL提供了NOT NULL约束,可以通过在创建表时定义字段时添加NOT NULL关键字,或者在已存在的表中通过ALTER TABLE语句添加NOT NULL约束。

例如,创建一个名为products的表,其中有一个列名为name,需要进行非空校验,可以使用如下的SQL语句:CREATE TABLE products (id INT,name VARCHAR(50) NOT NULL,price DECIMAL(10,2));2. 数据格式校验除非空校验外,有时还需要对数据的格式进行校验,以确保数据的正确性。

19.在ESQL/C程序中使用BYTE和TEXT数据类型

19.在ESQL/C程序中使用BYTE和TEXT数据类型

第十九章在ESQL/C程序中使用BYTE和TEXT数据类型融本章的目标列在上面。

融可以在嵌入语言中SELECT、INSERT或UPDATE任何类型的BLOB 值(BYTE或TEXT)。

这是通过设置一个定位器或loc_t变量来完成的,loc_t是一种特殊类型的宿主变量。

假定定位变量正确设置,则上面的三种语句允许使用。

融为在ESQL/C程序中使用BLOB变量的定位器,必须包括进两个语句。

第一个语句是:$include locator,它将把locator.h头文件包括进用户的ESQL/C程序。

该语句的另一种形式是#include "locator.h"。

这两种语句形式的区别在于,第一种形式是由ESQL/C预编译器处理,而第二种形式由C的预编译器处理。

虽然它们在功能上是等价的,但推荐使用第一种语句形式,因为它说明的头文件是特定于ESQL/C的。

必须包括进来的第二个语句是定义程序中要使用的任何BLOB定位变量。

定义BLOB定位变量的语法是:$locator varname; ,使用时,用变量名代替varname。

该语句的另一种形式是:$loc_t varname; 。

虽然这两种形式在功能上是等价的,但推荐使用第一种形式,因为它使得变量类型对于阅读程序的人来说含义更清晰。

一旦定义好了变量,就能在程序中使用它们。

融数据类型locator是loc_t结构的同义词,该结构用来处理BYTE和TEXT类型的数据对象。

loc_t结构在向数据库中插入数据时,描述数据对象的来源,而在获取数据时,描述数据对象获取后存放的目的。

loc_t结构不存放数据,它只存放定位数据的来源和目的的信息。

融因为用户进程和数据库进程都要访问loc_t结构,该结构中的域指定为USER、SYSTEM和INTERNAL三者之一。

指定为USER的域应当由用户程序设置,然后由数据库引擎进程来查看。

指定为SYSTEM的域由数据库引擎设置,并由用户程序检查。

SQLSERVER与C#的数据类型对应表

SQLSERVER与C#的数据类型对应表

SQLSERVER与C#的数据类型对应表// 数据库中与c#中的数据类型对照private string changetocsharptype(string type) {string reval=string.empty;switch(type.tolower()){case"int":reval= "int32";break;case"text":reval= "string";break;case"bigint":reval= "int64";break;case"binary":reval= "system.byte[]";break;case"bit":reval= "boolean";break;case"char":reval= "string";break;case"datetime":reval= "system.datetime";break;case"decimal":reval= "system.decimal";break;case"float":reval= "system.double"; break; case"image":reval= "system.byte[]"; break; case"money":reval= "system.decimal"; break; case"nchar":reval= "string"; break; case"ntext":reval= "string"; break; case"numeric":reval= "system.decimal"; break; case"nvarchar":reval= "string"; break; case"real":reval= "system.single"; break; case"smalldatetime": reval= "system.datetime"; break; case"smallint":reval= "int16";break;case"smallmoney": reval= "system.decimal"; break; case"timestamp":reval= "system.datetime"; break; case"tinyint":reval= "system.byte"; break; case"uniqueidentifier": reval= "system.guid"; break; case"varbinary":reval= "system.byte[]"; break; case"varchar":reval= "string"; break; case"variant":reval="object"; break;default:reval= "string"; break;}return reval;}。

ES之基本数据类型之间的显示转换和隐式转换

ES之基本数据类型之间的显示转换和隐式转换

ES之基本数据类型之间的显⽰转换和隐式转换typeof(数据)/ typeof 数据判断数据的数据类型,typeof返回的都是字符串输出结果类型有:number、string、boolean、 undefined、object、function。

注意点:①typeof⾥⾯的数据是null,输出object,虽然null属于原始值,但是系统会认为它是给对象占位置⽤得,历史遗留问题。

②typeof⾥⾯的数据是未声明的变量,控制台不报错,输出undefined,这也是未声明变量唯⼀不报错的地⽅。

————————————————————————————————————————————————————————————类型转换显⽰类型转换:Boolean() 除了0 、null 、undefined 、false 、""、是false,其他都是trueNumber(mix) undefined和只要有⾮数字(除了‘- +’)的字符串结果都为NaN,parseInt(String ,[radix])null、undefind、boolean的值为NaN。

radix参数:代表当前数据当前哪种进制数,并将该数据转换成⼗进制数。

radix范围为2-36.当没有radix参数时:系统默认为是⼗进制。

纯字符的字符串、以⾮数字开头的字符串返回的是NAN。

parseInt⽅法只能正常转换纯数字和以数字开头的字符串。

parseInt⽅法从数字开始取直到⼩数点或⾮数字位结束。

当有radix参数时:当不属于⼗进制时,若数据为number或纯数字字符串,会将该数据转换成⼗进制数;当⼤于⼗进制数时,纯字符的字符串、以⾮数字开头的字符串会先转换成ascii码然后转换成⼗进制数。

parseFloat(String)和parseInt相似,只是在数字和⾮数字的串中,从数字开始直到第⼀个⼩数点后⼀数字位结束。

String(mix) 任何数据类型都能转换成字符串。

sqlce 字段类型

sqlce 字段类型

sqlce 字段类型SQL Server Compact Edition(SQL CE)是Microsoft 提供的一种嵌入式数据库引擎,适用于一些轻量级应用和设备。

SQL CE 支持的字段类型相对较少,以下是一些常见的SQL Server Compact Edition 字段类型:1. NCHAR, NVARCHAR, NTEXT:- `NCHAR(n)`:固定长度的Unicode 字符串,最大长度为n。

- `NVARCHAR(n)`:可变长度的Unicode 字符串,最大长度为n。

- `NTEXT`:可变长度的Unicode 文本。

2. CHAR, VARCHAR, TEXT:- `CHAR(n)`:固定长度的非Unicode 字符串,最大长度为n。

- `VARCHAR(n)`:可变长度的非Unicode 字符串,最大长度为n。

- `TEXT`:可变长度的非Unicode 文本。

3. INT, BIGINT, SMALLINT:- `INT`:32 位整数。

- `BIGINT`:64 位整数。

- `SMALLINT`:16 位整数。

4. DECIMAL, FLOAT, REAL:- `DECIMAL(p, s)`:固定精度和比例的十进制数。

- `FLOAT(n)`:浮点数,n 表示精度。

- `REAL`:32 位浮点数。

5. DATETIME, SMALLDATETIME:- `DATETIME`:日期和时间。

- `SMALLDATETIME`:较小范围的日期和时间。

6. BIT:存储二进制数据的布尔值。

7. UNIQUEIDENTIFIER:全局唯一标识符(GUID)。

8. BINARY, VARBINARY, IMAGE:- `BINARY(n)`:固定长度的二进制数据,最大长度为n。

- `VARBINARY(n)`:可变长度的二进制数据,最大长度为n。

- `IMAGE`:可变长度的二进制大对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
deccvlong(long from, dec_t *to) 把C的长整数转化成DECIMAL值。
deccvdbl(double from, dec_t *to) 把C的双精度值转化成DECIMAL值。
2、DECIMAL函数——把DECIMAL值转换成字符型
dectoasc(dec_t *from, char *to, int len, int rt) 把DECIMAL值转换成ASCII字符串。
rfmtlong(double longval, char *fmt, char *str) 将长整型值格式化为指定的模板格式。
可以构成格式模板串的字符:
*以星号代替空格。
&以0代替空格。
#代表一个数字或空格的位置。
<左调整,显示一个逗号,仅当左边有数字时才显示。
.显示一个小数点,一个格式模板串只能有一个小数点。
rtypwidth(int sqltype, intsqllen) 返回一具有RDSQL类型的值转换为一字符类型时避免截取所需的最小字符数。
ESQL/C数据类型的进一步说明
一、DECIMAL数据类型的使用
1、DECIMAL函数——把C的数据类型转换为DECIMAL值
deccvasc(char *from, int len, dec_t *to) 把ASCII字符串转换成DECIMAL值。
说明:
len串缓冲区字节的最大长度。
rt表示十进制小数右边十进制的位数。
注意事项:
(1)rt=-1,则十进制位的个数有*from的十进制值决定。
(2)如果此数不适合长度len的字符串,则该函数将这个数转换为指数表示的形式。如果仍不适合,则串用“*”号填满。如果数的长度短于串长,则右对齐且左部用空格填充。
“mmm.dd.yyyy” “12/25/1997”
“yy/mm/dd” “97/12/25”
“yy/mm/dd” “1997,December, 25th“
“yy/mm/dd” “In the year 1997, the month of December, its 25th day”
stcmpr(char *s1, char *s2) 比较两个字符串。
strcpy(char *from, char *to) 把一个字符串拷贝到另一个字符串。
stleng(char *string) 统计字符串的长度。
2、定长串的操作函数
bycmpr(char byte1, byte2, rpt len) 比较两组连续的字节内存块。
dectodbl(dec_t *from, double *to)
4、DECIMAL函数——算术运算
decadd(dec_t *op1, dec_t *op2, dec_t *result);
decsub(dec_t *op1, dec_t *op2, dec_t *result);
decmul(dec_t *op1, dec_t *op2, dec_t *result);
“dd-mm-yy” “This 25th day of December, 1997”
rmdyjul(short mdy[3], long *jdate) 用三个短整数生成一个内部日期这三个整数是有关年、月、日的数字值。(年必须以完整的形式表达)
返回代码:
0操作成功。
rfmtdec(dec_t *from, char *format, char *to) 将DECIMAL值转换成格式化的字符串。
3、DECIMAL函数——把DECIMAL值转换成数值型
dectoint(dec_t *from, int *to);
dectolong(dec_t *from, long *to);
-1204在mdy[2]中有非法年份。
-1205在mdy[1]中有非法月份。
-1206在mdy[0]中有非法日期。
rstrdate(char *str, long *jdate) 将一个字符串日期转换成一内部格式的日期。
rtoday(long *jdate) 从系统日期创建一个内部日期值。
bycopy(char *from, char *to, int len) 把一块内存的内容拷贝到另一块内存。
byfill(char *to, int len, char ch) 用字符填充指定的内存块。
byleng(char from, int count) 统计有效字符的数目。有效字符是指字符串去除了末尾空格所剩的字符。
dececvt(dec_t *from, int ndgt, int *decpt, int *sign) 将一十进制数转换成以空格结束的具有指定个数的字符串,且返回此字符串的指针。
decfcvt(dec_t *from, int ndgt, int *decpt, int *sign) 将一十进制数转换成以空格结束、小数点右边具有指定位数的字符串,且返回此字符串的指针。
3、字符串操作函数
ldchar(char *from, int num, char *to) 拷贝定长串到空值结尾的串。
stchar(char *from, char *to, int num) 拷贝空值结尾的串到定长串。
4、字符串函数简单数值转换
rstod(char *str, double *dblval) 把以空值结束的字符串转换成C的double型
decdiv(dec_t *op1, dec_t *op2, dec_t *result);
返回代码:
0操作成功
-1200操作产生上溢
-1201操作产生下溢
-1202试图用零作除数
5、DECIMAL函数——DECIMAL操作
deccmp(dec_t *dec1, dec_t *dec2);
返回代码:
0操作成功。
-1204在str参数中有非法的月份。
-1206在str参数中有非法的日期。
-1209由于str中没有包含年、月、日各部分间的定界符,str的长度必须准确定义为6或8个字节长。
-1212fmt中没有包含年、月、日部分。
fmt和str的有效组合
返回值:
-1dec1<dec2
0dec1=dec2
1dec1>dec2
DECUNKNOW有一个是空值
deccopy(dec_t *dec1, dec_t *dec2);
decround(dec_t *dec1, int scale);
dectrunc(dec_t *dec1, int scale);
2、从内部日期转换成其他类型
rfmtdate(long jdate, char *fmt, char *str) 将内部格式的日期类型值转换为格式化的字符串。
返回代码:
0操作成功。
-1210内部日期不能被转换成月-日-年格式。
-1211程序存储溢出,即存储分配错误。
-显示负号,当数字为负的时候显示。
+显示正号,当数字为正的时候显示。
(显示一个负号,同(一起显示负值。
)显示一个负号,同)一起显示负值。
$显示美元符号。
(四)处理空值的数值类型函数
risnull(int type, char *cvar) 检查C变量是否为空值。
rsetnull(int type, char *cvar) 给C变量置空值。
ESQL/C的数据类型及转换
一、
1、SQL与C数据类型的对应
简单类型
SQL C
CHAR(n) char(n+1)
CHARCTER(n) char *
SMALLINT short int
INTERGER
INT long int
(五)其他函数
typalign(int pos, int type) 返回一具有指定数据类型变量的下一个位置。
rtypmsize(int sqltype, int sqllen) 返回你必须分配在存储单元中的指定的C或RDSQLD的字节数。
rtyname(int sqltype) 返回一包含指定RDSQL类型名的以空结尾的串。
MONEY dec_t or struct decimal
DATETIME dtime_t or struct dtime
INREVER intrvl_t or struct intrvl
VARCHAR varchar or string
2、数据类型转换
转换类型 转换后
rleapyear(int year) 用来判断给定的年份是否为闰年。
返回值:
TRUE(1) 是闰年
FALSE(0) 不是闰年
(三)简单数值类型的格式化函数
rfmtdouble(double dbval, char *fmt, char *str) 将双精度格式化为指定的模板格式。
返回值:
0转换成功
-1200数字太大,上溢。
-1201数字太小,下溢。
-1213存在非数值字符。
-1216存在错误指数。
注意事项:
(1)字符串的前导空格被忽略。
(2)字符串可以有前导符号“+”或“-”。
(3)字符串可以包含e或E的指数形式,指数前可带符号“+”或“-”。
deccvint(int from, dec_t *to) 把C的整数转化成DECIMAL值。
SMALLFLOAT
REAL float FLO NhomakorabeaT DOUBLE PRECISION double
相关文档
最新文档