电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

KSQL 参考手册

来源:金蝶云社区作者:金蝶2024-09-234

KSQL 参考手册

1 KSQL 概述

KSQL对金蝶产品实现多数据库支持非常重要。所有与金蝶ERP产品支持的数据库通讯的应用程序都通过向数据库服务器发送KSQL语句来实现通讯,与应用程序的用户界面无关。

KSQL是SQL92的子集。它抽取了SQL92的部分语法来满足金蝶ERP产品的最大功能集合,并随着金蝶ERP产品的发展逐渐丰富和完善。


2 KSQL语法规则

规范

用于

大写

KSQL 关键字或文法终结符(在具体语法子句中予以解释)

小写

KSQL的语法子句和文法非终结符(在具体语法子句中予以解释)

斜体

KSQL 语法中用户提供的参数。

| (竖线)

分隔括号或大括号内的语法项目。只能选择一个项目。

[ ] (方括号)

可选语法项目。不必键入方括号。

{}(大括号)

必选语法项。不要键入大括号。

[ ,...n ]

表示前面的项可重复 n 次。每一项由逗号分隔。

[ ...n ]

表示前面的项可重复 n 次。每一项由空格分隔。

加粗

数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。

<标签> ::=

语法块的名称。此规则用于对可在语句中的多个位置使用的过长语法或语法单元部分进行分组和标记。适合使用语法块的每个位置由括在尖括号内的标签表示:<标签>。

 

除非特别申明,否则所有对数据库对象名的KSQL引用可以是格式如下:

[database_name.] object_name

  • object_name 引用对象的名称。

当引用某个特定对象时,不必总是为KSQL指定标识该对象的数据库实体名称,也可以直接使用object_name引用某个特定对象,但它要依赖它自己所在的上下文环境。


3 KSQL数据类型

3.1   数据类型预览

数据类型

长度

Sql   server

Oracle

Db2

CHAR

[1,254]

CHAR[(n)]

CHAR[(n)]

CHAR[(n)]

VARCHAR

[1,4000]

VARCHAR[(n)]

VARCHAR2(n)

VARCHAR(n)

NCHAR

[1,2000]

NCHAR[(n)]

NCHAR[(n)]

?

NVARCHAR

[1,4000]

NVARCHAR[(n)]

NVARCHAR2(n)


BINARY

[1,2000]

BINARY[(n)]

RAW( n   )

VARCHAR(n)   FOR BIT DATA

VARBINARY

[1,8000]

VARBINARY[(n)]

LONG   RAW

LONG   VARCHAR FOR BIT DATA

BLOB

[1,2G]

IMAGE

BLOB

BLOB(n)

CLOB

[1,2G]

TEXT

CLOB

CLOB(n)

NCLOB

[1,1G]

NTEXT

NCLOB

?

INT,INTEGER

[-2^31,2~31-1]

INT

NUMBER(38)

INT

DECIMAL

[-10^31+1,10^31-1]




DATETIME


DATETIME

DATE

DATE   TIME TIMESTAMP

3.2   数据类型分类

KSQL支持的数据类型为 CHARVARCHAR , NCHARNVARCHARBINARYVARBINARYBLOB, CLOB, NCLOB, INT, INTEGERDECIMALDATETIME DATETIME

 

3.3   数据类型层次结构

字符和二进制字符串大对象

    CHAR

    VARCHAR

    CLOB

UNICODE字符和字符串大对象

    NCHAR

    NVARCHAR

    NCLOB

二制数据类型

    BINARY

    VARBINARY

二进制大对象

    BLOB

精确数字

    INT  

    INTEGER

近似数字

    DECIMAL

时间数据类型

日期 DATE

时间 TIME

时间戳 DATETIME


3.4   数据类型的优先顺序

当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是目标数据库所支持的固有转换,则返回错误。当两个操作数表达式有相同的数据类型时,运算的结果就为那种数据类型。


下面是KSQL数据类型的优先顺序:


  • CHAR

  • VARCHAR

  • NCHAR

  • NVARCHAR

  • BINARY

  • VARBINARY

  • BLOB

  • CLOB

  • NCLOB

  • DECIMAL

  • INT

  • BINARY

  • VARBINARY

  • BLOB

  • CLOB

  • NCLOB

  • DECIMAL

  • INT INTEGER

  • DATETIME    (最高)


3.5  数据类型解释

3.5.1    CHAR

定义固定长度字符数据类型。

语法

CHAR [ ( n ) ]

参数

n

    整型值,指定字符数据长度。它可以是1到2000中的值。如没定义,默认值是1。


3.5.2    VARCHAR

定义可变长度字符数据类型

语法

CHAR [ ( n ) ]

参数

n

    整型值,指定字符数据长度。它可以是1到2000中的值。如没定义,默认值是1。


3.5.3    NCHAR

固定长度的UNICODE数据的数据类型。

语法

NCHAR [ ( n ) ]

参数

n

    整型值,指定字符数据长度。它可以是1到4000中的值。如没定义,默认值是1。

 

3.5.4    NVARCHAR

可变长度长度的UNICODE数据的数据类型。

语法

参数

NVARCHAR [ ( n ) ]

n

    整型值,指定字符数据长度。它可以是1到4000中的值。如没定义,默认值是1。


3.5.5    BINARY

二进制数据类型

语法

BINARY [ ( n ) ]

参数

n

    整型值。

 

3.5.6    BLOB

可变长度二进制数据数据类型。

语法

BLOB [ ( n ) ]

参数

n

    整型值,它可以是0到2G之间的值。如没定义,默认值是1。


3.5.7    CLOB

可变长度非 Unicode 数据数据类型。

语法

CLOB [ ( n ) ]

参数

n

    整型值,它可以是0到2G之间的值。如没定义,默认值是1。

 

3.5.8    NCLOB

可变长度 Unicode 数据数据类型。

语法

NCLOB [ ( n ) ]

参数

n

    整型值,它可以是0到1G之间的值。如没定义,默认值是1。

 

3.5.9    INT 和INTEGER

使用整数数据的精确数字数据类型。

语法

{ INT | INTEGER }

参数

注释

    INT和INTEGER可表示[-2^31,2~31-1]间的数值。

 

3.5.10  DECIMAL

带定点精度和小数位数的数值数据类型

语法

DECIMAL [ ( p [ , s ] ) ]

参数

p

    精度,指定小数点左边和右边可以存储的十进制数字的最大个数。精度值可以是1到最大精度31之间的值。

S

    小数位数,指定小数点右边可以存储的十进制数字的最大个数。小数位数可以是[0,p]中的值。

 

3.5.11  DATETIME

日期和时间数值数据类型。

语法

参数


4 运算符号

4.1   +(加)

两个数相加。KSQL不允许使用‘+’进行字符串和日期的运算。

 

语法

expression + expression

 

参数

expression

    是数值类型中任何数据类型的任何有效KSQL表达式。

 

结果类型

返回优先级较高的参数的数据类型。

 

示例

    SELECT 1 + ABS( 2.0 ) FROM sample

 

4.2   +(正)

一元运算符,返回数字表达式的正值(一元运算符)。

 

语法

(+ numeric_expression)

 

参数

numeric_expression

    是数值类型中任何数据类型的任何有效KSQL表达式。

 

结果类型

返回numeric_expression的类型。

 

示例

    SELECT ( + 1 ) FROM sample


4.3   -(减)

两个数相减。KSQL不允许使用‘-’进行字符串和日期的运算。

 

语法

expression expression

 

参数

expression

    是数值类型中任何数据类型的任何有效KSQL表达式。

 

结果类型

返回优先级较高的参数的数据类型

 

示例

    SELECT ABS(2.0) – 1 FROM sample


4.4   -(负)

一元运算符,返回数字表达式的负值(一元运算符)。

 

语法

(-numeric_expression

 

参数

numeric_expression

是数值类型中任何数据类型的任何有效KSQL表达式。

 

结果类型

    返回numeric_expression的类型。


4.5   *(乘)

两个表达式相乘(算术乘法运算)。

 

语法  

expression * expression

 

参数

expression

    是数值类型中任何数据类型的任何有效KSQL表达式。

 

结果类型

    返回优先级较高的参数的数据类型。

 

示例

    SELECT price * 1.5 AS NewPrice FROM titles


4.6   /(除)

用一个数除以另一个数(算术除法运算符)。

 

语法

dividend / divisor

 

参数

dividend

    是被除的数字表达式,dividend可以是数值类型中任何数据类型的有效表达式。

Divisor

    除数的数字表达式。divisor可以是数值类型中任何数据类型的有效表达式。

 

结果类型

返回优先级较高的参数的数据类型。如果用一个整型的 divisor 去除整型的 dividend,其结果是一个整数,小数部分被截断。

 

注释

    由 / 运算符返回的实际值是用第一个表达式除以第二个表达式所得的商。

 

式例

SELECT ((ytd_sales * price) * royalty)/100 AS ‘Royalty Amout’ FROM titles

WHERE type = ‘business’ ORDER BY title_id


4.7    =(等于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果两个操作数相等,则结果为 TRUE;否则结果为FALSE. 如果两个操作数中有一个或者两个都为 NULL,比较结果由目标数据库的环境参数决定。转换取决于数据类型优先级。

 

语法

expression = expression

 

参数

expression

    可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

 

结果类型

Boolean


4.8   >(大于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的值大于右边的操作数,则结果为 TRUE;否则结果为FALSE。如果两个操作数中有一个或者两个都为 NULL, 比较结果由目标数据库的环境参数设置决定。

 

语法

expression > expression

 

参数

expression

        可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

 

结果类型

Boolean


4.9   <(小于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的值小于右边的操作数,则结果为 TRUE;否则结果为FALSE。如果两个操作数中有一个或者两个都为 NULL, 比较结果由目标数据库的环境参数设置决定。

 

语法

expression < expression

 

参数

    expression

        可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

 

结果类型

Boolean

 

4.10     >=(大于或等于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的值大于或等于右边的操作数,则结果为 TRUE;否则结果为FALSE。如果两个操作数中有一个或者两个都为 NULL, 比较结果由目标数据库的环境参数设置决定。

 

语法

expression > = expression

 

参数

expression

可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

 

结果类型

Boolean

 

4.11     <=(小于或等于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的值小于或等于右边的操作数,则结果为 TRUE;否则结果为FALSE。如果两个操作数中有一个或者两个都为 NULL, 比较结果由目标数据库的环境参数设置决定。

 

语法

expression = < expression

 

参数

expression

    可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

 

结果类型

Boolean


4.12     <>(不等于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的值不等于右边的操作数,则结果为 TRUE;否则结果为FALSE。如果两个操作数中有一个或者两个都为 NULL, 比较结果由目标数据库的环境参数设置决定。

 

语法

expression < > expression

 

参数

expression

    可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

   

结果类型

Boolean


4.13     !=(不等于)

比较两个表达式(比较运算符)。当比较非空表达式时,如果左边操作数的值不等于右边的操作数,则结果为 TRUE;否则结果为FALSE。如果两个操作数中有一个或者两个都为 NULL, 比较结果由目标数据库的环境参数设置决定。

 

语法

expression != expression

 

参数

expression

    可以是数值类型中任何数据类型的有效表达式。两个表达式都必须有可隐式转换的数据类型。转换取决于数据类型优先级。

 

结果类型

Boolean

5 注释

5.1   ――(单行注释)

表示用户提供的文本。可以将注释插入单独行中、嵌套(只限--和//)在 KSQL 命令行的末端,或者KSQL语句中。目标数据库不对注释进行评估。--是SQL92标准的注释符号。

 

语法

-- text_of_comment

 

参数

text_of_comment

    包含注释文本的字符串

 

注释

将 -- 用于单行或嵌套的注释。用 -- 插入的注释由换行字符分界。注释没有最大长度限制。

 

示例

    SELECT * FROM authors ORDER BY au_id ASC -- We don't have to specify ASC because that

--is the default.


   

5.2   //(单行注释)

表示用户提供的文本。可以将注释插入单独行中、嵌套(只限--和//)在 KSQL 命令行的末端,或者KSQL语句中。目标数据库不对注释进行评估。//是KSQL引用了其他高级语言的注释方法。

 

语法

// text_of_comment

 

 参数

text_of_comment

    包含注释文本的字符串。

 

注释

将 // 用于单行或嵌套的注释。用 // 插入的注释由换行字符分界。注释没有最大长度限制。

 

示例

    SELECT * FROM authors ORDER BY au_id ASC  // We don't have to specify ASC because that

//is the default.

 

5.3   /*   */(多行注释)

表示用户提供的文本。可以将注释插入单独行中、嵌套在 KSQL 命令行的末端,或者KSQL语句中。目标数据库不对注释进行评估。

 

语法

/* text_of_comment*/

   

参数

text_of_comment

    包含注释文本的字符串。

 

注释

将/* */用于单行的和嵌套的注释。由/* */插入的注释不受换行分界符的限制。

 

示例

    SELECT * FROM authors ORDER BY au_id ASC  /* We don't have to specify ASC because that

is the default.*/


6 通配符

6.1   [ ](通配符 — 需匹配的字符)

匹配指定范围内或者属于方括号所指定的集合中的任意单个字符。


6.2    [^](通配符字符 — 无需匹配的字符)

匹配不处于指定范围内或者不属于方括号内指定集合中的任意单个字符。

 

6.3   _(通配符 — 匹配一个字符)

匹配任意单个字符,并且可以被用作前缀或后缀。


6.4   %(通配符 — 匹配一个或多个字符)

匹配任意单个或多个字符,并且可以被用作前缀或后缀。


7 标识符号

KSQL规定,数据库名,数据库别名,数据表名,数据表别名,字段名,字段别名,视图名,视图别名,索引名,索引别名, 约束名都属于标识符范围。


7.1   命名规则:

7.1.1    一般标识符

以英文字母开头,后跟连续的一个或多个英文字母,下划线或数字。

示例

合法的命名:tTable, t__, t123, tTable__, tTable123, t123__, t__123等。

不合法的命名:_t, _123, 123table, $table, tTable 123等。


7.1.2    引号标识符

包含在双引号内的除双引号以外的连续或不连续字符序列。

示例

合法的命名:”__”, ”123”, ”table      123”等

不合法的命名:””””, “””, “”tTable””等。


7.1.3    临时表表名标识符

以#或##开头的后跟符号一般表示符命名规则的标识符号。

示例

合法的命名:#tTable, ##tTable, #t__, ##t__等。

和合法的命名:#__, #123, ##1_, ##_12等。


8 常量

8.1   时间常量

语法

格式

含义

{d 'yyyy-mm-dd'}

日期

{t 'hh:mm:ss'}

时间

{ts 'yyyy-mm-dd hh:mm:ss'}

时间戳

 

注释

时间戳的日期和时间之间只允许出现一个空格分隔符号。

时间中不支持毫秒。

 

示例

时间戳:{ts‘2002-07-17 10:51:18’}

日期:{d‘2002-07-17’}

时间:{t‘10:51:18’}


8.2   字符串常量

语法

[ N | n ] ‘ [ ^’ ] ’

 

参数

N

    指示该字符歘常量为UNICODE字符串。

n

    指示该字符歘常量为UNICODE字符串。

注释

包含在’’中的除’以外的任何字符序列。

 

示例

合法的字符串常量:‘’, ‘ ‘, ‘               ‘, ‘ ^ ‘, ’hello’等。

合法的UNICODE字符串常量:n‘’, N‘ ‘, N‘               ‘, n‘ ^ ‘, N’hello’等。

不合法的字符串常量:’’’,’’’’’等。

不合法的字符串常量:N’’’,n’’’’’等。


9 函数

9.1   数值函数

9.1.1    ABS

返回给定数字表达式的绝对值。

语法

ABS ( numeric_expression )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式

返回类型

返回与 numeric_expression 相同的类型。

示例

SELECT ABS(-1.0), ABS(0.0), ABS(1.0)


9.1.2    CELLING

返回大于或等于所给数字表达式的最小整数。

语法

CEILING ( numeric_expression )

参数

numeric_expression

    是精确数字或近似数字数据类型类别的表达式

返回类型

返回与 numeric_expression 相同的类型。

示例

SELECT CEILING(123.45), CEILING(-123.45), CEILING(0.0)

 

9.1.3    COS

一个数学函数,返回给定表达式中给定角度(以弧度为单位)的三角余弦值。

语法

COS ( float_expression )

参数

float_expression

    DECIMAL类型得expression

返回类型

DECIMAL

示例

SELECT CONVERT (VARCHAR,COS(14.78)) FROM sample


9.1.4    EXP

返回所给的 float 表达式的指数值。

语法

EXP ( float_expression )

参数

float_expression

    DECIMAL类型的表达式。

返回类型

DECIMAL

示例

SELECT CONVERT (VARCHAR,COS(378.615345498)) FROM sample


9.1.5    FLOOR

返回小于或等于所给数字表达式的最大整数。

语法

FLOOR ( numeric_expression )

参数

numeric_expression

    精确数字或近似数字数据类型类别的表达式。

返回类型

返回与 numeric_expression 相同的类型。

示例

SELECT FLOOR(123,45), FLOOR(-123.45), FLOOR(123.45) FROM sample


9.1.6    LOG

返回给定 float 表达式的自然对数。

语法

LOG ( float_expression )

参数

float_expression

    是DECIMAL数据数据类型的表达式 。

返回类型

DECIMAL

示例

SELECT  CONVERT(varchar,LOG(5.175643)) AS  “The LOG of the variable is:” FROM sample


9.1.7    PI

返回PI的值。

语法

PI( )

参数

DECIMAL

返回类型

DECIMAL

示例

SELECT PI( ) AS “PI is” FROM sample

 

9.1.8    SIGN

返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号。

语法

SIGN ( numeric_expression )

参数

numeric_expression

    精确数字或近似数字数据类型类别的表达式。

返回类型

DECIMAL

示例

SELECT SIGN( -1),SIGN(10) ,SING(0) FROM sample

 

9.1.9    SIN

以近似数字 (float) 表达式返回给定角度(以弧度为单位)的三角正弦值。

语法

SIN ( float_expression )  

参数

float_expression

    DECIMAL类型得表达式。

返回类型

DECIMAL

示例

SELECT   CONVERT(varchar,SIN(45.175643)) AS The SIN of the angle is: FROM sample

 

9.1.10  SQRT

返回给定表达式的平方根。

语法

SQRT ( float_expression )

参数

float_expression

    DECIMAL类型的表达式。

返回类型

DECIMAL

示例

SELECT SQRT( 1.0 ) FROM sample


9.1.11  TAN

返回输入表达式的正切值。

语法

TAN ( float_expression )

参数

float_expression

返回类型

floatreal 类型的表达式,解释为弧度数。

示例

SELECT TAN(PI( ) /2) FROM sample


9.1.12  LOG10

返回给定 float 表达式的以 10 为底的对数。

语法

LOG10 ( float_expression )

参数

float_expression

        DECIMAL类型的表达式。

返回类型

DECIMAL

示例

SELECT CONVERT(varchar,LOG10(145

KSQL 参考手册

1 KSQL 概述KSQL对金蝶产品实现多数据库支持非常重要。所有与金蝶ERP产品支持的数据库通讯的应用程序都通过向数据库服务器发送KSQL语句来...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信