远程Sybase数据库技术支持,联系手机:13811580958,QQ:289965371!

 

随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从http://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站http://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!

如有Sybase数据库技术问题需要咨询,请联系我!

  QQ :289965371 点击这里给我发消息
  Email:

以下官方手册为ASE 15.7 ESD#2中文版:

  1. 新增功能公告 适用于 Windows、Linux 和 UNIX 的 Open Server 15.7 和 SDK 15.7
  2. 新增功能摘要
  3. 新增功能指南
  4. ASE 15.7 发行公告
  5. 配置指南(windows)
  6. 安装指南(windows)
  7. 参考手册:构件块
  8. 参考手册:命令
  9. 参考手册:过程
  10. 参考手册:表
  11. Transact-SQL® 用户指南
  12. 系统管理指南,卷 1
  13. 系统管理指南,卷 2
  14. 性能和调优系列:基础知识
  15. 性能和调优系列:锁定和并发控制
  16. 性能和调优系列:监控表
  17. 性能和调优系列:物理数据库调优
  18. 性能和调优系列:查询处理和抽象计划
  19. 性能和调优系列:使用 sp_sysmon 监控 Adaptive Server
  20. 性能和调优系列:利用统计分析改进性能
  21. 程序员参考 jConnect for JDBC 7.0.7
  22. Adaptive Server Enterprise 中的 Java
  23. 组件集成服务用户指南
  24. Ribo 用户指南
  25. 内存数据库用户指南
  26. Sybase Control Center for Adaptive Server® Enterprise
  27. 安全性管理指南
  28. 实用程序指南

 


< 上一个 | 内容 | 下一步 >

convert

说明 将指定的值转换成另一数据类型或其它 datetime 显示格式。

语法 convert (datatype [(length) | (precision[, scale])] [null | not null], expression [, style])

参数 datatype

系统提供的数据类型(例如,char(10)unichar (10)varbinary (50) int), 表达式可以转换成这些数据类型。不能使用用户定义的数据类型。

如果数据库中已启用 Javadatatype 也可以是当前数据库中的

Java-SQL 类。

length

是与 charncharunicharunivarcharvarcharnvarcharbinary varbinary 数据类型一起使用的可选参数。如果不提供长度, Adaptive Server 将把字符类型的数据截断到 30 个字符,把二进制类型的数据截 断到 30 字节。字符和二进制表达式可以具有的最大长度是 64K

precision

numeric decimal 数据类型中的有效位数。对于 float 数据类型,精 度是指尾数中有效的二进制位数。如果不提供精度, Adaptive Server 将对 numeric decimal 数据类型使用缺省精度 18

scale

numeric decimal 数据类型中小数点右侧的位数。如果不提供标 度, Adaptive Server 将使用缺省标度 0

null | not null

指定结果表达式的可为空性。如果不提供 null not null,转换后的结 果将与表达式具有相同的可为空性。

expression 是要从一种数据类型或日期格式转换为另一种数据类型或日期格式 的值。

如果数据库中已启用 Javaexpression 可以是将要转换为 Java-SQL 类 的值。

unichar 用作目标数据类型时,如果未指定长度,则使用缺省长度, 即 30 Unicode 值。


style

是用于已转换数据的显示格式。如果将 money smallmoney 数据转换 为字符类型,则使用 style 1,在每 3 位数后显示一个逗号。

如果将 datetime smalldatetime 数据转换为字符类型,则使用 2-3 中的样式编号指定显示格式。最左列的值显示 2 位数的年份 ( yy )。对 于 4 位数的年份 ( yyyy ),可添加 100,或使用中间列的值。

在将 date 数据转换为字符类型时,将使用 2-3 中的样式编号 1 7

101 107)或 10 12 110 112)来指定显示格式。缺省值为 100 mon dd yyyy hh:miAM (或 PM))。如果 date 数据转换为包含 时间部分的样式,该时间部分将显示缺省值 0

在将 time 数据转换为字符类型时,使用样式编号 8 9108 109) 来指定显示格式。缺省值为 100mon dd yyyy hh:miAM(或 PM))。 如果 time 数据转换为包含日期部分的样式,将显示缺省日期 Jan 1, 1900

2-3:使用 style 参数的日期格式转换

不含世纪 (yy)

含世纪 (yyyy)

标准

输出

-

0 100

Default

mon dd yyyy hh:mm AM (或 PM

1

101

美国

mm/dd/yy

2

2

SQL 标准

yy.mm.dd

3

103

英语 / 法语

dd/mm/yy

4

104

德语

dd.mm.yy

5

105

dd-mm-yy

6

106

dd mon yy

7

107

mon dd, yy

8

108

HH:mm:ss

-

9 109

缺省值 + 毫秒

mon dd yyyy hh:mm:ss AM(或 PM

10

110

美国

mm-dd-yy

11

111

日本

yy/mm/dd

12

112

ISO

yymmdd

13

113

yy/dd/mm

14

114

mm/yy/dd

14

114

hh:mi:ss:mmmAM (或 PM

15

115

dd/yy/mm

-

16 116

mon dd yyyy HH:mm:ss

17

117

hh:mmAM

说明 mon”表示英文拼写的月份,“mm”表示月份或分钟。“HH”表示 24 小时制时钟值, “hh”表示 12 小时制时钟值。最后一行 (第 23 行)包含文字 “T”以分离格式中的日期部分 和时间部分。


不含世纪 (yy)

含世纪 (yyyy)

标准

输出

18

118

HH:mm

19

hh:mm:ss:zzzAM

20

hh:mm:ss:zzz

21

yy/mm/dd HH:mm:ss

22

yy/mm/dd HH:mm AM (或 PM

23

yyyy-mm-ddTHH:mm:ss

说明 mon”表示英文拼写的月份,“mm”表示月份或分钟。“HH”表示 24 小时制时钟值,

hh”表示 12 小时制时钟值。最后一行 (第 23 行)包含文字 “T”以分离格式中的日期部分 和时间部分。


缺省值 (style 0 100)和 style 9 109 返回世纪 ( yyyy )。如果从 smalldatetime 转换为 char varchar,包括秒或毫秒的样式将在这些位 置上显示零。

示例 示例 1

select title, convert(char(12), total_sales) from titles

示例 2

select title, total_sales from titles

where convert(char(20), total_sales) like "1%"

示例 3 将当前日期转换为样式 “3”, dd/mm/yy

select convert(char(12), getdate(), 3)

示例 4 如果值 pubdate 可以为空,则必须使用 varchar 而不是 char,否则 可能出错:

select convert(varchar(12), pubdate, 3) from titles

示例 5 返回字符串“0x00000100”的等值整数。结果会因平台的不同而 变化:

select convert(integer, 0x00000100)

示例 6 将特定于平台的位模式作为 Sybase 二进制类型返回:

select convert (binary, 10)

示例 7 返回 1,它是 $1.11 的等值位字符串:

select convert(bit, $1.11)


示例 8 用数据类型为 char(100) total_sales 创建 #tempsales,且不允许 空值。即使将 titles.total_sales 定义为允许空值,也使用不允许空值的

#tempsales.total_sales 来创建 #tempsales

select title, convert (char(100) not null, total_sales) into #tempsales

from titles

用法 convert 是一个数据类型转换函数,它在多种数据类型之间进行转换 并将日期 / 时间及货币数据重新格式化,以便于显示。

如果它们被压缩, convert 会在将它们转换为其它数据类型之前先解 压缩大对象 (LOB) 列。

convert — 返回已转换为其它数据类型或其它 datetime 显示格式的指 定值。当从 unitext 向其它字符和二进制数据类型转换时,结果受到 目标数据类型的最大长度的限制。如果未指定长度,转换后的值将 具有缺省大小 (30 个字节)。如果正在使用 enabled enable surrogate processing,将返回整个代理 对。例 如,如果将包含 数据 U+0041U+0042U+20acU+0043 (代表 “AB unitext 列转换为 UTF-8 varchar(3) 列,则会返回以下信息:

select convert(varchar(3), ut) from untable

--- AB

convert 的参数超出该函数的定义范围时,该函数就会产生域错误。 这种错误应极少发生。

使用 null not null 可指定目标列的可为空性。尤其是,可使用 select into 创建一个新表,然后在源表中更改现有列的数据类型和可为空性

(参见前面的示例 8)。

在以下条件下,结果将为未定义的值:

所转换的表达式将是 not null 结果。

表达式的值为空。

使用下面的 select 语句能够为可预测的结果生成已知的非空值:

select convert(int not null isnull(col2, 5)) from table1

您可以使用 convert image 列转换为 binary varbinary。这种转换 受到 binary 数据类型的最大长度的限制,该长度由服务器逻辑页大 小的最大列大小决定。如果未指定长度,转换后的值将具有缺省的 长度 (30 个字符)。


可以将 unichar 表达式用作目标数据类型,也可将它们转换成其它数 据类型。 unichar 表达式可在服务器支持的任何其它数据类型间显式 或隐式转换

unichar 用作目标类型时,如果您未指定长度,则使用缺省长度, 即 30 Unicode 值。如果目标类型的长度不足以容纳给定的表达 式,就会显示出错消息。

隐式转换

如果两种数据类型的主字段不匹配,那么在这两种数据类型之间进行隐 式转换可能导致数据截断、插入缺省值或产生错误消息。例如,如果将 datetime 值转换为 date 值,时间部分将被截断,只留下日期部分。如果 将 time 值转换为 datetime 值,将在新的 datetime 值中添加缺省的日期部 分 Jan 1, 1900。如果将 date 值转换为 datetime 值,则将向 datetime 值中 添加缺省的时间部分 00:00:00:000

DATE -> VARCHARCHARBINARYVARBINARYDATETIMESMALLDATETIME TIME -> VARCHARCHARBINARYVARBINARYDATETIMESMALLDATETIME VARCHARCHARBINARYVARBINARYDATETIMESMALLDATETIME -> DATE VARCHARCHARBINARYVARBINARYDATETIMESMALLDATETIME -> TIME

显式转换

如果试图将 date 显式转换为 datetime,并且值 (如 “Jan 1, 1000”)超出

datetime 范围,则不允许转换并出现提示性的错误消息。

DATE -> UNICHARUNIVARCHAR TIME -> UNICHARUNIVARCHAR UNICHARUNIVARCHAR -> DATE UNICHARUNIVARCHAR -> TIME

涉及 Java 类的转换

如果数据库中已启用 Java,则可按下列方法使用 convert 更改数据 类型:

Java 对象类型转换为 SQL 数据类型。

SQL 数据类型转换为 Java 类型。

如果表达式(源类)的编译时数据类型是目标类的子类或超类, 则会将安装在 Adaptive Server 上的任何 Java-SQL 类转换为安装 在 Adaptive Server 上的任何其它 Java-SQL 类。

转换的结果与当前的数据库相关联。

标准 符合 ANSI SQL 的级别 Transact-SQL 扩展。

权限 任何用户都可以执行 convert


另请参见 文档 Transact-SQL 用户 指南》Adaptive Server Enterprise 中的 Java(其中列出了允许的数据类型映射,并提供了涉及 Java 类的数据 类型转换的详细信息)。

数据类型 用户定义的数据类型

函数 hextoint inttohex




--------------------------------------华丽的分割线-------------------------------------------------------------------------
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具:ReadASADB。
此工具支持ASA v5.0,v6.0,v7.0,v8.0,v9.0,v10.0,v11.0,v12.0等版本。
恢复Sybase SQL Anywhere的工具在国内应该算首创。

ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具

  1. 适用于所有的SQL Anywhere版本    包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x
  2. 适用于所有的UltraLite版本
  3. 能够恢复出来表结构和数据
  4. 能够恢复自定义数据类型
  5. 能够恢复存储过程等对象的语法
  6. 能够导出到目标数据库
  7. 能够导出到SQL文件并生成导入脚本
  8. 支持多种字符集  包括:cp850、cp936、gb18030、utf8等
  9. 能够恢复未加密或者简单加密类型的数据
  10. 简单易用
  11. 限制:不支持AES加密的数据文件
请参考:研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具
            SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍

ReadASADB适用场景

各种误操作:

  1. 误截断表(truncate table)
  2. 误删除表(drop table)
  3. 错误的where条件误删数据
  4. 误删除db或log文件
  5. 误删除表中的字段

本工具的应用场景:

1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page等等。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------