DA SQL语法手册.docx

上传人:b****5 文档编号:30668620 上传时间:2023-08-19 格式:DOCX 页数:32 大小:25.85KB
下载 相关 举报
DA SQL语法手册.docx_第1页
第1页 / 共32页
DA SQL语法手册.docx_第2页
第2页 / 共32页
DA SQL语法手册.docx_第3页
第3页 / 共32页
DA SQL语法手册.docx_第4页
第4页 / 共32页
DA SQL语法手册.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

DA SQL语法手册.docx

《DA SQL语法手册.docx》由会员分享,可在线阅读,更多相关《DA SQL语法手册.docx(32页珍藏版)》请在冰豆网上搜索。

DA SQL语法手册.docx

DASQL语法手册

D&ASQL语法手册

v1.02009-7-23

1概述

本手册意于方便D&ASQL脚本的编写工作,为了解和查找语法提供便利。

目前本手册包含了查询和ORM脚本所涉及的所有语法。

将整体语法分为6个大类,大类中又分为各小类,每个小类都有详细的语法描述和每种情况的示例。

2基本语句

这里主要介绍最基本的语法,包括参数声明、值引用的表示以及字面值的表示。

下面逐一介绍。

2.1名称表示

Ø语法描述

名称所指的是非关键字、非操作符、非字面值和非参数类型的各种名称,包括表名称、表别名、表字段名、函数名、参数名、选择列别名、表关系名、表级次名、查询名、ORM名等。

对于名称由如下要求和表示:

1),名称要求是英文字母、阿拉伯数字和下划线的连续组合,并且首字符必须是英文字母。

这里的英文字母包括大写和小写。

2),所有的名称区分大小写(关键字不区分大小写)。

3),除了参数名称,所有的名称可以用双引号引起来表示,例如:

”NAME”,在这种情况下,双引号内可以是任何非双引号字符。

该方式通常用在名称与关键字冲突或名称中有特殊字符的情况下。

在名称中,用两个连续的双引号来表示一个双引号字符(目前代码生成尚不支持这一点)。

Ø示例

first_name

""

"a””a"

2.2参数声明

Ø语法描述

参数类型

说明

boolean

布尔值类型

bytes

字节序列类型

byte

字节类型

date

日期类型

double

双精度浮点类型

enum

枚举类型

float

单精度浮点类型

guid

统一标识符类型

int

普通整数类型

long

长整数类型

short

短整数类型

string

字符串类型

参数声明的基本语法是:

@参数名称参数类型

这里要求参数名称紧跟‘@’符号,所有允许的参数类型如右图所示。

注意,这里的参数名称和参数类型均区分大小写。

参数声明之后可以跟随参数的限定:

notnull

default字面值

所有限定可以随意组合,字面值的语法参见2.4节,字面值的类型应与参数类型匹配(具体条件是:

字面值可以直接或隐式转换为参数类型的值)

Ø示例

@para1boolean

@para2guidnotnull

@para3stringdefault'YES'

@para4intnotnulldefault0

2.3值引用表示

Ø语法描述

基本值引用有两种:

一种是表字段引用,另一种是参数引用。

值引用是最简单的值表达式之一。

表字段引用的句型如下:

表别名‘.’字段名称

要求表别名存在,并且字段名称对应字段存在与该表别名对于的存储表中

参数引用的句型如下:

@参数名称

这里与参数声明一样,要求参数名称紧跟’@’符号。

Ø示例

tb_stu.name

“tb_stu”.”avg”

@para4

2.4字面值表示

Ø语法描述

字面值是在脚本源码中直接表示特定类型常量的值表达式。

以下逐一介绍所有支持的字面值表达式:

1),整数字面值:

用一串阿拉伯数字表示一个整数值,整数值前加一负号(‘-’,不要求紧随)则表示为负值整数。

2),浮点字面值:

在一串阿拉伯数字中穿插有唯一个小数点(‘.’)则该数为浮点字面值;也可以是在一串阿拉伯数字后加E或e并紧接一个整数;还可以是前面两种情况的结合。

浮点字面值前加一负号(‘-’,不要求紧随)则表示为负值浮点数。

3),字符串:

用单引号(’’’)引起的一个由非单引号字符组成的序列。

其中,用两个连续的单引号表示一个单引号字符。

4),日期字面值:

“data”关键字后跟随一个字符串,字符串应符合”年-月-日小时:

分钟:

秒”的格式。

5),标识符字面值:

“guid”关键字后跟随一个字符串,该字符串必须由十六进制数组成,长度为32。

6,字节序列字面值:

“bytes”关键字后跟随一个字符串,该字符串必须由十六进制数组成,长度不限。

Ø示例

1223

-23.44

23e5

4.4e-3

'helloworld'

'it''syou'

date'2008-10-1314:

25:

56'

guid'010B03D40F6070809101112A314151E'

bytes'00C102A3'

2.5注释

Ø语法描述

用两个连续的短横杆号(‘--’)来将之后的整行作为注释。

这里只支持单行注释。

Ø示例

--这是注释

-23.44–-负浮点数

3值表达式语句

在前面的基本语句中,列出了最简单的值表达式。

这里将详细介绍各种较为复杂的值表达式语法。

在所有的值表达式中,括号具有最高的优先级,而后是其他非运算符表达式,其次是乘除法,加减法的优先级最低。

3.1运算符值表达式

基本数值类型

byte

date

double

float

int

long

short

Ø语法描述

运算符有:

加法(’+’)、减法(’-’)、乘法(’*’)、除法(’/’)以及括号(’(’,’)’)。

加减乘除法是二元运算符,其句型如下:

数值表达式运算符数值表达式

前后必须是数值类型的值表达式,基本数值类型如右图所示,支持的类型是所有的基本数值类型以及这些类型所派生的非数组类型。

括号运算符的句型如下:

‘(‘值表达式‘)’

其中,对值表达式的数值类型不限,返回值即为其中表达式的值。

Ø示例

4+3

65–44*34–2.3

(65–44)*(34–2.3)

3.2集合函数

Ø语法描述

集合函数是一种特殊的函数,由多行记录得到一个单一记录,这一点使得其在许多情况下不能与普通值表达式并列(参考标准SQL关于集函数的语法)。

集合函数有count(计数)、avg(平均值)、sum(求和)、max(取最大值)和min(取最小值)。

count函数的所有句型如下:

count‘(‘*‘)’

count‘(‘[ALL|DISTINCT]值表达式‘)’

句型中的方括号(’[’,’]’)表示其中内容可选,或号’|’表示左右内容为或的关系。

“count(*)”表示取所有记录的个数。

“count(ALL值表达式)”表示计算所有指定表达式的记录个数,ALL可省略。

“count(DISTINCT值表达式)”表示计算所有指定表达式不重复的记录个数。

avg和sum函数的句型如下:

函数名‘(‘[ALL|DISTINCT]数值表达式‘)’

max和min函数的句型如下:

函数名‘(‘数值表达式‘)’

avg和sum句型中的ALL和DISTINCT的语法和含义同count。

不同的是,这四个函数要求值表达式是数值表达式(参见“3.1运算符值表达式”中关于数值表达式的描述)。

Ø示例

count(*)

count(distincte.BIRTH)

avg(alle.BIRTH)

max(e.BIRTH)

min(e.BIRTH)

3.3级次函数

Ø语法描述

级次函数是与表级次密切相关的一系列特殊函数。

用于取得或者运算些与级次相关的值。

目前大概分为两类,一是级次深度函数,一是父级次标识符函数。

级次深度函数用于取得当前记录的指定表级次的深度。

其句型如下:

h_lv‘(‘表别名‘.’表级次名‘)’

父级次标识符函数用于取得当前记录的指定表级次上父记录的标识符(guid)。

其句型如下:

h_aid‘(‘表别名‘.’表级次名‘)’

h_aid‘(‘表别名‘.’表级次名rel整数表达式‘)’

h_aid‘(‘表别名‘.’表级次名abo整数表达式‘)’

第一个句型取得的值是直接上级的标识符,第二个句型取得的值是相对深度为指定数值的上级的标识符,而第三个句型取得的值是绝对深度为指导数值的上级的标识符。

Ø示例

h_lv(t.hier)--取得级次层次数

h_aid(t.hier)--取得直接上级的标识符

h_aid(t.hierrel@rlv)--取得相对层次数上级的标识符

h_aid(t.hierabo@alv)--取得绝对层次数上级的标识符

3.4普通函数

Ø语法描述

普通函数是具有大量而语法一致的函数,这些函数都以值表达式为参数,同样也返回值。

这些函数的主要作用是运算和转换,它们的句型如下:

函数名‘(‘参数列表‘)’

参数列表的句型如下:

[值表达式[{‘,’值表达式}]]

大括号表示其内容可重复1或多次。

如句型所示,参数列表可以为空,也可以具有多个值表达式作为函数的参数,每个值表达式用逗号分隔。

每个函数的参数列表会有所不同,同一函数名也会有不同参数列表。

以下列出目前支持的所有函数,并予以说明:

✧日期函数

●getdate--获取系统当前日期时间

参数列表:

参数类型:

参数说明:

返回值类型:

date

●yearof--获取日期表达式年数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●quarterof--返回日期表达式在年中的季度数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●monthof--返回日期表达式在年中的月数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●weekof--返回日期表达式的在年中的周数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●dayof--返回日期表达式的在年中的周数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●dayofyear--返回日期表达式的在年中的天数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●dayofweek--返回日期表达式的在周中的天数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●hourof--返回日期表达式的小时数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●minuteof--返回日期表达式的分数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●secondof--返回日期表达式的秒数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●millisecondof--返回日期表达式的毫秒数

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

int

●addyear--日期表达式增加以年为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addquarter--日期表达式增加以季度为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addmonth--日期表达式增加以月为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addweek--日期表达式增加以周为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addday--日期表达式增加以天为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addhour--日期表达式增加以小时为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addminute--日期表达式增加以分为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●addsecond--日期表达式增加以秒为单位的时间间隔

参数列表:

dateinterval

参数类型:

dateint

参数说明:

日期表达式时间间隔数

返回值类型:

date

●yeardiff--计算两个日期的间隔年数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●quarterdiff--计算两个日期的间隔季度数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●monthdiff--计算两个日期的间隔月数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●weekdiff--计算两个日期的间隔周数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●daydiff--计算两个日期的间隔天数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●hourdiff--计算两个日期的间隔小时数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●minutediff--计算两个日期的间隔分数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●seconddiff--计算两个日期的间隔秒数

参数列表:

startDateendDate

参数类型:

datedate

参数说明:

开始日期结束日期

返回值类型:

int

●isleapyear--日期是否闰年

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

boolean

●isleapmonth--日期是否闰月

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

boolean

●isleapday--日期是否闰日

参数列表:

date

参数类型:

date

参数说明:

日期表达式

返回值类型:

boolean

✧数学函数

●sin--返回角度(以弧度为单位)的正弦值

参数列表:

randians

参数类型:

double

参数说明:

弧度

返回值类型:

double

●cos--返回角度(以弧度为单位)的余弦值

参数列表:

randians

参数类型:

double

参数说明:

弧度

返回值类型:

double

●tan--返回角度(以弧度为单位)的正切值

参数列表:

randians

参数类型:

double

参数说明:

弧度

返回值类型:

double

●asin--返回角度(以弧度为单位)的反正弦值

参数列表:

randians

参数类型:

double

参数说明:

弧度

返回值类型:

double

●acos--返回角度(以弧度为单位)的反余弦值

参数列表:

randians

参数类型:

double

参数说明:

弧度

返回值类型:

double

●atan--返回角度(以弧度为单位)的反正切值

参数列表:

randians

参数类型:

double

参数说明:

弧度

返回值类型:

double

●exp--返回指定值的指数值

参数列表:

power

参数类型:

double

参数说明:

指数

返回值类型:

double

●power--返回指定值的指定幂的值

参数列表:

basepower

参数类型:

doubledouble

参数说明:

底数指数

返回值类型:

double

●ln--返回指定值以e为底的对数值,即自然对数

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

double

●sqrt--返回指定值的平方根

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

double

●ceil--返回大于或等于指定值的最小整数

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

long

●floor--返回小于或等于指定值的最大整数

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

long

●round--返回最接近表达式的整数

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

long

●sign--返回参数的符号函数值

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

int

●abs--返回参数的绝对值

参数列表:

number

参数类型:

double

参数说明:

数值

返回值类型:

double

✧字符串函数

●chr--将ASCII代码转换为字符

参数列表:

ascii

参数类型:

int

参数说明:

ascii代码

返回值类型:

string

●nchr--返回具有指定的整数代码的Unicode字符

参数列表:

national

参数类型:

int

参数说明:

unicode代码

返回值类型:

string

●ascii--返回字符表达式中最左侧的字符的ASCII代码值

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

int

●len--返回指定字符串表达式的字符数

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

int

●indexof--返回字符串中指定表达式的开始位置

参数列表:

strsearch

参数类型:

stringstring

参数说明:

字符串要索引的字符串

返回值类型:

int

●indexof--返回字符串中指定表达式的开始位置

参数列表:

strsearchposition

参数类型:

stringstringint

参数说明:

字符串匹配串起始位置

返回值类型:

int

●lower--返回指定字符串表达式的字符数

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

string

●upper--返回指定字符串表达式的字符数

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

string

●ltrim--删除字符表达式的前导空格

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

string

●rtrim--删除字符表达式的尾随空格

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

string

●trim--删除字符表达式的前后的空格

参数列表:

str

参数类型:

string

参数说明:

字符串

返回值类型:

string

●substr--返回字符串表达式的子串

参数列表:

strposition

参数类型:

stringint

参数说明:

字符串起始位置

返回值类型:

string

●substr--返回字符串表达式的子串

参数列表:

strpositionlength

参数类型:

stringintint

参数说明:

字符串起始位置截取长度

返回值类型:

string

●replace--删除字符表达式的前后的空格

参数列表:

strsearchreplace

参数类型:

stringstringstring

参数说明:

字符串匹配串替换串

返回值类型:

string

 

Ø示例

yeardiff(e.CAREER,getdate())

addyear(e.BIRTH,10)

yearof(e.BIRTH)

addyear(@c,1)

addday(@c,23)

chr(30)

nchr(30)

ascii('s')

len(e.FIRSTNAME)

indexof(e.CODE,'code')

indexof(e.CODE,'code',50)--从50开始查找

lower(e.CODE)

upper(e.CODE)

rtrim(e.FIRSTNAME)

ltrim(e.FIRSTNAME)

substr(e.FIRSTNAME,2)

substr(e.FIRSTNAME,2,2)

replace(e.FIRSTNAME,e.LASTNAME,'sdf')

3.5其他值表达式

Ø语法描述

●case语句

case语句的语法和作用类似与java的switch语句,其句型如下:

case值表达式{when值表达式then(值表达式|null)}[else(值表达式|null)]end

括号用于限定或号(’|’)的作用范围,方括号表示其中内容可以有也可以没有,大括号表示其中内容重复出现1次到多次。

●coalesce语句

coalesce语句用于选择参数列表中的第一个有效值(即,非null),其句型如下:

coalesce’(’值表达式[{‘,’值表达式}]‘)’

其语法和普通函数十分相似,不同的是,其参数至少需要一个,而且参数个数不定,参数类型不限,返回值类型不定。

Ø示例

casee.CODEwhen@codethen'res01'else'default'end

coalesce(e.BIRTH,e.CAREER,@date)

4谓词表达式语句

谓词表达式用作于进行条件判断,通常由表引用、值表达式等组成。

在谓词表达式语句中,括号具有最高优先级,其次是各种值表达式,再者是各种非操作符谓词表达式,接着是非运算(not)

展开阅读全文
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1