第三十一章 SQL函数 CONVERT
CONVERT(datatype,expression[,format-code])
{fn CONVERT(expression,datatype)}
参数
expression - 要转换的表达式。
datatype - 要将表达式转换为的数据类型。
format - 可选-指定日期和时间格式的整数代码,用于在日期/时间/时间戳数据类型和字符数据类型之间进行转换。 此参数仅用于通用标量语法形式。
描述
这里描述了CONVERT函数的两种不同实现。 两者都将一种数据类型中的表达式转换为另一种数据类型中的相应值。 两者都执行日期和时间转换。
注意:这两个CONVERT实现中的参数以不同的顺序表示。 第一个是与MS SQL Server兼容的通用 IRIS标量函数,它接受三个参数。 第二个是带有两个参数的 ODBC标量函数。 下面的文本将分别处理这两种形式的CONVERT。
CONVERT(datatype,expression)支持流数据的转换。 例如,可以将字符流字段的内容转换为数据类型为VARCHAR的字符串。
{fn CONVERT(expression,datatype)}不支持流数据的转换; 指定要表达的流字段将导致SQLCODE -37错误。
为两个版本的CONVERT指定一个无效值将导致SQLCODE -141。
如果表达式没有定义的数据类型(例如ObjectScript提供的主机变量),则其数据类型默认为字符串数据类型。
CONVERT(datatype,expression,format-code)
可以通过执行VARCHAR-to-VARCHAR转换来截断字符串,指定输出字符串长度小于表达式字符串长度。
在使用CONVERT(或CAST)时,如果字符数据类型(如CHAR或VARCHAR)没有指定长度,则默认的最大长度为30个字符。 如果二进制数据类型(如binary或VARBINARY)没有指定长度,则默认的最大长度为30个字符。 否则,这些没有指定长度的数据类型将被映射到一个1个字符的MAXLEN,如data types表所示。
可以执行BIT数据类型转换。 允许的值为1、0或NULL。 如果指定任何其他值,IRIS将发出SQLCODE -141错误。 在下面的嵌入式SQL示例中,两者都是一个NULL的BIT转换:
ClassMethod Convert()
{
s a=""
&sql(
SELECT CONVERT(BIT,:a),
CONVERT(BIT,NULL)
INTO :x,:y)
w !,"SQLCODE=",SQLCODE
w !,"the host variable is:",x
w !,"the NULL keyword is:",y
}
可选的format-code参数指定日期、datetime或时间格式。 该格式既可用于定义从日期/时间/时间戳数据类型转换为字符串时的输出,也可用于定义从字符串转换为日期/时间/时间戳数据类型时的输入。 支持以下格式代码; 输出两位数年份的格式代码列在第一列; 输出四位数年或不输出年的格式列在第二列:
Two-digit year codes Four-digit year codes Format
以下是日期和时间转换的特性:
取值范围:允许的日期范围为0001-01-01 ~ 9999-12-31。
默认值:
将时间值转换为TIMESTAMP、POSIXTIME、DATETIME或SMALLDATETIME时,日期默认为1900-01-01。 注意,对于{fn CONVERT()},日期默认为1841-01-01。
将日期值转换为TIMESTAMP、POSIXTIME、DATETIME或SMALLDATETIME时,时间默认为00:00:00。
Default Format:如果没有指定Format -code, CONVERT将尝试从指定的值确定格式。 如果不能,则默认为格式代码100。
两位数年份:从00到49的两位数年份转换为21世纪的日期(2000到2049); 从50到99的两位数年份转换为20世纪的日期(1950到1999)。
分数秒:分数秒前可以加句号()或冒号(:)。 这些符号有不同的含义:
句点是默认值,可用于所有格式代码。 句号表示标准分数; 因此,12:00:004表示十分之四秒,而12:00:00004表示千分之四秒。 分数精度的位数没有限制。
冒号只能用于以下格式代码值:9/109、13/113、14/114、130和131。 冒号表示后面的数字是千分之一秒; 因此12:00:00:4表示四万分之一秒(12:00:00004)。 冒号后面的数字限制为3位。
当指定表达式的格式无效或格式与格式代码不匹配时,将产生SQLCODE -141错误。 指定一个不存在的格式代码将返回1900-01-01 00:00:00。
{fn CONVERT(expression,datatype)}
这是ODBC标量函数。 它支持以下ODBC显式数据类型转换。 必须使用“SQL_”关键字指定这种形式的CONVERT的数据类型转换。 在下表中,有两组转换数据类型,第一组转换数据值和数据类型,第二组转换数据类型,但不转换数据值:
Source Conversion
SQL_VARCHAR是标准的ODBC表示。 在转换为SQL_VARCHAR时,日期和时间被转换为相应的ODBC表示; 数字数据类型值转换为字符串表示。 从SQL_VARCHAR转换时,该值必须是有效的ODBC Time、Timestamp或Date表示。
当将时间值转换为SQL_TIMESTAMP或SQL_POSIXTIME时,未指定的日期默认为1841-01-01。 注意,对于CONVERT(),日期默认为1900-01-01。
将date值转换为SQL_TIMESTAMP或SQL_POSIXTIME时,时间默认为00:00:00。
在这种语法形式中,小数秒前面可以加句号()或冒号(:)。 这些符号有不同的含义。 句号表示标准分数; 因此,12:00:004表示十分之四秒,而12:00:00004表示千分之四秒。 冒号表示接下来的是千分之一秒; 因此12:00:00:4表示千分之四秒。 冒号后面的数字限制为3位。
在转换为整数数据类型或SQL_DOUBLE数据类型时,数据值(包括日期和时间)将转换为数字表示。 对于SQL_DATE,这是自1841年1月1日以来的天数。 对于SQL_TIME,这是自午夜以来的秒数。 当遇到非数字字符时,输入字符串将被截断。 整数数据类型还截断十进制数字,返回数字的整数部分。
{fn CONVERT(expression,datatype)}不支持流数据的转换; 指定要表达的流字段将导致SQLCODE -37错误。
转换成任何数据类型的NULL仍然是NULL。
空字符串("),或任何非数字字符串值转换如下:
SQL_VARCHAR和SQL_TIMESTAMP返回提供的值。
数字数据类型转换为0(零)。
SQL_DATE和SQL_TIME转换为NULL。
CONVERT 类方法
还可以使用CONVERT()方法调用执行数据类型转换,使用" SQL_"关键字指定数据类型:
$SYSTEMSQLFunctionsCONVERT(expression,convert-to-type,convert-from-type)
如下示例所示:
WRITE $SYSTEMSQLCONVERT(60945,"SQL_VARCHAR","SQL_DATE")
2007-11-11
示例
CONVERT() 示例
下面的示例使用标量语法形式的CONVERT。
下面的示例比较了使用DECIMAL和DOUBLE数据类型对小数的转换:
SELECT CONVERT(DECIMAL,-1234567890000123456789) AS DecimalVal,
CONVERT(DOUBLE,-1234567890000123456789) AS DoubleVal
下面的示例将字符流字段转换为VARCHAR文本字符串。 它还使用CHAR_LENGTH显示字符流字段的长度:
SELECT Notes,CONVERT(VARCHAR(80),Notes) AS NoteText,CHAR_LENGTH(Notes) AS TextLen
FROM SampleEmployee WHERE Notes IS NOT NULL
下面的例子展示了几种将出生日期字段(DOB)转换为格式化字符串的方法:
SELECT DOB,
CONVERT(VARCHAR(20),DOB) AS DOBDefault,
CONVERT(VARCHAR(20),DOB,100) AS DOB100,
CONVERT(VARCHAR(20),DOB,107) AS DOB107,
CONVERT(VARCHAR(20),DOB,114) AS DOB114,
CONVERT(VARCHAR(20),DOB,126) AS DOB126
FROM SamplePerson
默认格式和代码100格式是相同的。 因为DOB字段不包含时间值,所以显示时间的格式(这里包括默认值100、114和126)提供一个零值,它表示12:00AM(午夜)。 代码126格式提供了一个不包含空格的日期和时间字符串。
{fn CONVERT()} 示例
下面的示例使用了ODBC语法形式的CONVERT。
下面的嵌入式SQL示例将混合字符串转换为整数。 IRIS在第一个非数字字符处截断字符串,然后将结果数字转换为规范形式:
ClassMethod Convert1()
{
s a="007 James Bond"
&sql(SELECT {fn CONVERT(:a, SQL_INTEGER)} INTO :x)
w !,"SQLCODE=",SQLCODE
w !,"the host variable is:",x
}
DHC-APP>d ##class(PHATESTSQLCommand)Convert1()
SQLCODE=0
the host variable is:7
下面的示例将“DOB”(出生日期)列中的日期转换为SQL_TIMESTAMP数据类型。
SELECT DOB,{fn CONVERT(DOB,SQL_TIMESTAMP)} AS DOBtoTstamp
FROM SamplePerson
生成的时间戳格式为“yyyy-mm-dd hh:mm:ss”。
下面的示例将“DOB”(出生日期)列中的日期转换为SQL_INTEGER数据类型。
SELECT DOB,{fn CONVERT(DOB,SQL_INTEGER)} AS DOBtoInt
FROM SamplePerson
下面的示例将“DOB”(出生日期)列中的日期转换为SQL_VARCHAR数据类型。
SELECT DOB,{fn CONVERT(DOB,SQL_VARCHAR)} AS DOBtoVChar
FROM SamplePerson
生成的字符串格式为:yyyy-mm-dd。
有区别的 日本版的只对日本国内销售跟中国市场的有区别 不过网点买的DHC有待验证真假 我就买到过颜色有点不一样的DHC睫毛增长液 老板死活说是日本版的 还好我是认识日语的 发现包装上有个很明显的日文错误 证明是假的
化妆品的市场上,假货时有发生。那么我们应该如何辨别是否是真货呢?
我们可以通过包装仔细观察。真正的化妆品包装通常会注重细节和质感,包装袋或盒子的印刷质量较高,色彩鲜艳且清晰,没有模糊或褪色的现象。在包装上还会有相关的标识和防伪码,我们可以通过官方渠道进行查询。
我们可以通过气味来判断。真正的化妆品通常具有独特的香味,而假货则可能散发出异味或者没有任何气味。所以,在购买时可以试闻一下,如果有明显的异样气味,那么很可能就是假货。
我们还可以通过观察化妆品的质地和颜色来鉴别真假。真正的化妆品在质地上通常较为细腻且均匀,颜色也比较自然。而假货可能因为制作工艺不精致或者使用了劣质原料,质地粗糙、色泽不均匀。
另外一个重要的方法是通过购买渠道来辨别。我们应该选择正规的购物平台或者专柜购买化妆品,这样可以降低假货的风险。要注意查看商家的信誉和评价,避免购买来路不明的产品。
还可以通过价格来判断。如果某个品牌的化妆品价格远低于市场价,那么很可能是假货。因为真正的化妆品生产成本较高,一般都不会出现大幅度的降价。
如果你已经购买了怀疑是假货的化妆品,可以通过对比真假产品的细节来进一步验证。可以找到官方渠道或者专业人士进行鉴别,并留下证据以备投诉或退货。
辨别化妆品是否是假货需要我们仔细观察包装、闻气味、观察质地与颜色、选择正规渠道购买并注意价格等方面。只有通过多方面的判断和比较,我们才能更好地保护自己的权益,避免购买到假冒伪劣产品。
1、首先启动Windows server 2008 R2操作系统,点击任务栏"开始"按钮。弹出任务栏开始菜单,选择"管理工具→DHCP"项。
2、唤出"DHCP"程序窗口,选择左侧DHCP服务器。
3、展开左侧DHCP服务器目录结构,鼠标右击"DHCP服务器→IPv4→作用域"文件夹。
4、弹出快捷菜单选项列表,选择"属性"项。弹出"作用域 属性"对话框,选择"高级"标签。
5、调整"延迟配置→子网延迟"文本框上、下按钮,完成设置DHCP服务器子网延迟时间。
当然可以
这个我知道,我用了好多,靠谱的不多。我给你推荐几个吧。
其实这些App赚的钱都不多的。不过,作为零花钱来说还是不少的。
因为这些App经过答主亲测,所以真实性可以得到保证。
另外需要说明的是:不稳定的后台需要多次提交审核才能通过审核,所以说选择一个好平台也很重要。
让手机中毒是不会的,至少答主玩了这么久还没有遇到过
手机短信作为一种非常重要的沟通方式,正在被越来越多的企业重视。本文介绍的企业短信应用平台简单易行,可以为企业提供方便灵活的、基于短信的双向交流渠道。 多年来,及时准确地采集前端销售数据、快速地将各种消息传递给目标人群一直是各类企业追求的目标。尽管PC加互联网是很好的手段,但由于体积大,无论是放在柜台上还是用户携带都不便,而如果每人配备一台笔记本电脑或PDA的投入又比较大。另一方面,根据信息产业部的统计数据,2005年我国移动电话用户已超过39亿户,全年手机短信发送量3046亿条,比2004年短信增长了40%,比2000年增长了303%。手机普及率的提高,再加上短信的价格低廉,使得短信逐步深入到我们的生活之中。
作为企业信息化的一部分,不少企业开始考虑建立企业的短信应用平台,为企业提供方便灵活的基于短信的双向交流渠道。目前已有的应用形式包括: 通过短信平台来群发短信、查询手机接收的状态; 针对企业员工的邮件、公文、日程安排等进行短信提醒; 接收手机发来的各种信息,针对不同的信息进行相关的处理,如信息采编、事务批办、点播等操作。
短信平台的工作过程
移动运营商为保证接入的一致性及安全性,要求各服务商通过短信网关接入短信中心,短信系统由以下部分组成:
1短信信息服务参与实体
服务提供商(Service Provider, SP): 短信信息服务的信息提供者。
短信网关(Internet Short Message Gateway, ISMG): 提供SP与短信中心之间数据交换的通道,采用CMPP(China Mobile Peer to Peer)协议与SP进行连接,采用SMPP 33协议与短信中心连接。
短信中心(Short Message Service Center, SMSC): 利用信令网将短消息发送给手机用户。
2 短信服务业务的工作过程
用户发短信业务(即MO业务,如信息点播等):短信中心将短信内容以SMPP协议发给连接的短信网关,短信网关根据短信发送号码(即SP的服务代码)将短信内容以CMPP协议发给相应的SP,由SP进行处理。
用户收短信业务(即MT业务,如短信群发等):提供此项业务的SP将短信内容以CMPP协议发给连接的短信网关,由短信网关根据用户手机号段以SMPP协议发给用户所属的短信中心; 短信中心将短信下发到用户手机终端上。
系统设计与实现
企业短信应用平台的建设首先要考虑以下问题:
● 容错性: 具有良好的容错判断,日志记录详细。
● 可扩展性: 平台针对发送或接收都具有很强的扩展性。在发送功能方面,只需将短信内容添加到短信平台,由发送服务统一发送; 在接收功能方面,只需开发人员开发对新增功能的处理即可,在接收上增加新功能时配置不需修改短信收发程序。
● 可靠性: 通过查看发送成功状态确认手机接收是否成功。
● 可配置性: 无论对短信中心的连接参数,还是重发次数、时间间隔,接收的功能均可以通过配置进行修改和扩充。
● 支持长短信和WAP Push类型的发送。
● 短信个性化定制: 用户自定义过滤短信功能,用户可以通过短信个性化界面自定义对短信的发送人、短信邮件地址域名以及短信接收时间的过滤,符合过滤条件的短信将不发送给用户。
下面介绍短信应用平台的具体设计与实现。
1 系统准备及参数设置
为实现与短信网关的互连,企业首先需要向移动运营商申请接入短信网关的接入号、用户名、密码、企业代码,获得MO、MT端 口号 。在上述前提具备后,企业就可以以SP的身份接入短消息网关。具体涉及以下内容:
● 网络连接: 申请专线或其他方式连接到移动运营商的短信网关。
● 系统参数: 参数设置包括短信网关IP地址、用户名、密码、服务号码、MT端口、MO端口等信息; 要求状态报告的短信应用类型集合; WAP Push的类型集合; 发送失败的重发次数、时间间隔; 告警接收地址等信息。
● 运行环境: 可以基于Windows实现,如Windows 2000 Advance Server与Microsoft SQL Server 2000的组合。
2 数据库设计
对于数据库平台没有过多要求,如果企业已经有数据库平台,可以继续沿用。本方案中采用MS SQL 2000,短信应用平台包括4个数据库表,分别存放准备发送的消息、接收到的消息、参数配置和接收配置信息。接收配置表用来记录各种业务代码对应的处理程序。
3 网关服务程序设计及实现
短信网关服务包括接收和发送程序,以服务的形式运行,通过CMPP协议与运营商的短消息网关(ISMG)进行通信(参见图2)。有两个主进程: 一个是以发送者身份连接到运营商的短信网关而建立的发送者线程,一个是以接收者身份连接到运营商短信网关的接收者线程。发送程序主要功能是连接运营商短信网关、监控发送表,把原始短消息经过解析、过滤形成可以发送的短消息,并发送到指定的手机用户,完成信息的传送功能; 而接收者进程连接运营商短信网关,接收并分析短信中心发来的各种消息,确认手机接收状态,实现点播、审批、信息汇总等功能。
(1)短信发送程序
这里特别需要注意以下三点:
● 对原始短消息过滤是根据个人对短信的过滤设置进行过滤的。
● 发送长短信时,必须严格按照协议格式要求,如: 长短信必须以UCS2编码格式提交,并将消息体内容以Unicode格式编码,然后对每个Unicode字符高低字节互换。在头结构中有两个标识位,一个用来声明总条数,一个用来声明是第几条。
● WAP Push类型的短消息有两部分内容: 消息提示及URL。编码格式是UTF-8(字节数可变的编码)格式,要严格按照格式要求发送。
(2)接收线程流程
短信接收线程的工作包括: 记录ISMG的接收确认回执ID; 记录ISMG返回的手机终端已接收成功的回执信息码,即状态报告; 对用户发送来的短信内容进行分析、处理。
第1项工作用来确认短信网关(ISMG)接收成功。第2项工作情况用来确认手机已经接收到短消息。第3项工作情况需要针对不同的信息进行不同的处理,即根据内容的业务代码(这里定义短信内容中特殊分隔符内的信息为业务代码,也可以使用长代码功能来定义业务代码)与接收配置表匹配,调用对应的处理程序,并将除业务代码外的所有短信内容传递给处理程序,由各模块的程序自行分析、处理,从而保证不修改接收线程,都可以灵活增加接收类型。
用户发来的消息长度不超过70个汉字长度时,可以正常按消息格式解析; 当用户发来的消息长度大于70个汉字长度时,短消息中心会分段将消息内容下发,其中消息文本前6个字节是长短信的头结构。需要通过接收线程将信息解析完整。
4短信安全
短信数据的安全性让很多企业担忧。由于短信传送的路径原因担心短信是否会在中途丢失,以及区分所发短信正确与否都是观望中的企业考虑之一。
对于丢失的担心完全可以利用程序来解决。对于发送的短信,可以加上要求短信中心返回手机接收的确认回执,短信中心发送到手机上之后,在接收到手机接收成功的回执后,将回执返给企业的短信应用平台。如果短信应用平台在一定时间之内没有接到确认,那么可以重发。对于手机发给短信应用平台的信息也同样,如公文处理,短信应用平台在接收到用户发来的信息后,不论处理成功与否,都将处理结果发给用户。
应用举例
企业短信应用平台实现了短信的集中收发,可以在此之上扩展更多的应用,如: 号码查询、短信群发、公文短信审批等。
号码查询 号码查询功能实现查询企业员工的联系电话。这里定义查询业务代码为dh,开发查询程序dhcx,将业务代码与程序的对应关系添加到接收配置表中。当用户查询张三的电话时,在短信内容中输入“张三”,收件人中输入“企业的接入号”,发送到企业短信平台。
短信服务调用dhcx程序进行查询,dhcx程序将查询结果返到企业短信平台,短信服务将结果发给用户,从而实现了号码查询功能。
短信群发 短信群发功能实现企业的短信通知,可以作为会议通知、商业宣传等应用。短信通知模块只需将用户通知内容传递到企业短信平台,由短信服务统一进行发送。
总体而言,短信作为一种低成本的承载方式,完全可以为企业所用。上述短信平台也只是一个基本的应用框架,我们完全可以在这个短信应用平台之上进行扩展,实现更多的功能,以满足企事业单位的不同业务要求。
(作者单位:辽宁移动通信有限责任公司)
欢迎分享,转载请注明来源:品搜搜测评网