1 关注者 · 494 帖子

SQL 是在关系数据库中存储、操作和检索数据的标准语言。

文章 姚 鑫 · 一月 18, 2022 3m read

第二十七章 SQL函数 CHARINDEX

一个字符串函数,它返回子字符串在字符串中的位置,具有可选的搜索起点。

大纲

CHARINDEX(substring,string[,start])

参数

  • substring - 要在字符串中匹配的子字符串。
  • string - 作为子字符串搜索目标的字符串表达式。
  • start - 可选-子字符串搜索的起始点,指定为正整数。 从字符串开始的字符计数,从1开始计数。 若要从字符串的开头开始搜索,请忽略此参数或指定从0或开始。 负数、空字符串、或非数字值被视为。

返回数据类型。

描述

在字符串中搜索子字符串。 如果找到匹配,则返回第一个匹配子字符串的起始位置,从1开始计算。 如果不能找到子字符串,返回0

空字符串是一个字符串值。 因此,可以将空字符串用于任意一个字符串参数值。 参数将空字符串值视为。 但是,请注意ObjectScript空字符串作为传递给 SQL。

不是SQL中的字符串值。 因此,为任何一个字符串参数指定NULL都会返回。

不能将字段用于字符串或子字符串参数。尝试这样做会生成错误。可以使用函数获取字段并返回数据类型值以供使用。

区分大小写。使用其中一个大小写转换函数查找字母或字符串的大写和小写实例。

此函数提供了与实现的兼容性。

CHARINDEX, POSITION, $FIND和INSTR

CHARINDEX, , 和

0
0 188
文章 姚 鑫 · 一月 16, 2022 1m read

第二十五章 SQL函数 CHAR

返回具有在字符串表达式中指定的ASCII代码值的字符的字符串函数。

大纲

CHAR(code-value)

{fn CHAR(code-value)}

参数

  • code-value - 与字符相对应的整数代码。

描述

Char返回与指定的整数代码值对应的字符。因为 IRIS是系统,所以可以为任何字符指定整数代码,从到。如果是超出允许值范围的整数,则返回。

如果代码值是非数字字符串,则返回一个空字符串()。如果传递空值,CHAR返回。

请注意,可以用作标量函数(使用花括号语法),也可以用作SQL常规函数。

示例

以下示例均返回字符:

SELECT CHAR(90) AS CharCode

Z
SELECT {fn CHAR(90)} AS CharCode

Z

下面的示例返回希腊字母:

ClassMethod Cast2()
{
	&sql(SELECT {fn CHAR(955)}
	   INTO :greeklet)
	w !,"Greek letter: ",greeklet
}

0
0 131
文章 姚 鑫 · 一月 14, 2022 2m read

第二十四章 SQL函数 CEILING

数值函数,返回大于或等于给定数值表达式的最小整数。

大纲

CEILING(numeric-expression)

{fn CEILING(numeric-expression)}

参数

  • numeric-expression - 要计算其上限的数字。

CELING返回与NUMERIC-EXPRESSION相同的数据类型。

描述

返回大于或等于的最接近的整数值。返回值的小数位数为0。当为值、空字符串()或任何非数字字符串时,返回。

请注意,可以作为ODBC标量函数(使用花括号语法)调用,也可以作为SQL常规函数调用。

也可以使用方法调用从ObjectScript调用此函数:

$SYSTEM.SQL.Functions.EILING(numeric-expression)

示例

以下示例显示了 如何将分数转换为其 整数:

SELECT CEILING(167.111) AS CeilingNum1,
       CEILING(167.456) AS CeilingNum2,
       CEILING(167.999) AS CeilingNum3
SELECT {fn CEILING(167.00)} AS CeilingNum1,
       {fn CEILING(167.00)} AS CeilingNum2
0
0 129
文章 姚 鑫 · 一月 13, 2022 3m read

第二十三章 SQL函数 CAST(二)

转换位值

可以将expr值转换为BIT以返回0或。 如果为或任何其他非零数值,则返回。 如果为、或,则返回。 (可以用任何大小写组合表示,但不能缩写为。) 如果是任何其他非数值值,则返回。 如果为,则返回。

在下面的例子中,前个操作返回1,后个操作返回0:

SELECT CAST(1 AS BIT) AS One, 
       CAST(7 AS BIT) AS Num,      
       CAST(743.6 AS BIT) AS Frac,  
       CAST(0.3 AS BIT) AS Zerofrac,
       CAST('tRuE' AS BIT) AS TrueWord,
       CAST(0 AS BIT) AS Zero,  
       CAST('FALSE' AS BIT) AS FalseWord, 
       CAST('T' AS BIT) AS T,    
       CAST('F' AS BIT) AS F,   
       CAST(0.0 AS BIT) AS Zerodot     

示例

下面的示例使用函数将平均值表示为整数,而不是浮点数。 请注意,

0
0 116
文章 姚 鑫 · 一月 11, 2022 1m read

第二十一章 SQL函数 ATAN2

接受两个坐标并返回以弧度为单位的反正切角的标量数值函数。

注意:IRIS可用,IRIS以下不可用。

大纲

{fn ATAN2(y,x)}

参数

  • y - 指定y轴坐标的数值表达式。
  • x - 指定轴坐标的数值表达式。

ATAN2返回或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

采用射线的笛卡尔坐标,并以浮点数的形式返回角的正切反(弧)。 用两个坐标的符号来确定笛卡尔坐标。 当x为正值时,ATAN2返回与相同的值。 如果传递一个值,将返回。 将非数字字符串(包括空字符串())视为数字值。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子调用ATAN2:

SELECT {fn ATAN2(15,30)} AS ArcTangent 

0.463647609000806116
0
0 106
文章 姚 鑫 · 一月 10, 2022 1m read

第二十章 SQL函数 ATAN

一个标量数值函数,返回角的正切的弧切值(以弧度为单位)。

大纲

{fn ATAN(numeric-expression)}

参数

  • numeric-expression - 一个数值表达式。 这是这个角的正切。

ATAN返回NUMERIC或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

接受任何数值,并以浮点数返回角度正切的反(弧)值。 如果传递一个值,ATAN将返回。 将非数字字符串(包括空字符串())视为数字值。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子展示了ATAN的效果:

SELECT {fn ATAN(0.52)} AS ArcTangent 

0.479519291992596165
0
0 109
文章 姚 鑫 · 一月 9, 2022 1m read

第十九章 SQL函数 ASIN

一个标量数值函数,返回角的正弦的反正弦(以弧度为单位)。

大纲

{fn ASIN(numeric-expression)}

参数

  • numeric-expression - 数值在-1到1之间的数值表达式。 这是这个角的正弦值。

ASIN返回NUMERIC或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

以浮点数的形式返回角度正弦的反(弧)值。 的值必须是有符号的十进制数,取值范围为1 ~ -1(含1)。 超出此范围的数字将导致运行时错误,生成(发生致命错误)。 如果传递一个值,将返回。 将非数字字符串(包括空字符串())视为数字值。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子展示了ASIN对两个正弦的影响。

SELECT {fn ASIN(0.52)} AS ArcSine 

0.54685095069594411
SELECT {fn ASIN(-1.00)} AS ArcSine 

-1.570796326794896619
0
0 165
文章 姚 鑫 · 一月 8, 2022 1m read

第十八章 SQL函数 ASCII

一个字符串函数,返回字符串表达式的第一个(最左边)字符的整型ASCII码值。

大纲

ASCII(string-expression)

{fn ASCII(string-expression)}

参数

  • string-expression - 字符串表达式,它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHARVARCHAR)。 或类型的字符串表达式。

描述

如果传入一个NULL或空字符串值,将返回NULL。 空字符串返回与一致。

SELECT ASCII('Z') AS AsciiCode

90
SELECT {fn ASCII('ZEBRA')} AS AsciiCode 

90

在执行转换之前,SQL将数字转换为规范形式。 下面的例子返回55,它是数字7的值:

如果数字以字符串的形式表示,则不执行此数字解析。 下面的例子返回43,它是加()字符的ASCII值:

0
0 159
文章 姚 鑫 · 一月 7, 2022 1m read

第十七章 SQL函数 ACOS

一个标量数值函数,返回给定余弦的弧余弦(以弧度为单位)。

大纲

{fn ACOS(numeric-expression)}

参数

  • numeric-expression - 数值在-1到1之间的数值表达式。 这是这个角的余弦值。

ACOS返回NUMERIC或数据类型。 如果数值表达式是数据类型, 返回; 否则,返回。

描述

接受一个数值并以浮点数的形式返回余弦的反(弧)值。 的值必须是有符号的十进制数,取值范围为1 ~ -1(含1)。 超出此范围的数字将导致运行时错误,生成(发生致命错误)。 如果传入值,将返回。 将非数字字符串(包括空字符串())视为数字值0。

返回一个精度为、刻度为18的值。

只能用作标量函数(使用花括号语法)。

可以使用函数将弧度转换为角度。 可以使用函数来转换角度到弧度。

示例

下面的例子展示了ACOS对两个余弦的影响:

SELECT {fn ACOS(0.52)} AS ArcCosine 

1.02394537609895251
SELECT {fn ACOS(-1)} AS ArcCosine

3.141592653589793238
0
0 101
文章 姚 鑫 · 一月 6, 2022 1m read

第十六章 SQL函数 ABS

返回数值表达式的绝对值的数值函数。

大纲

ABS(numeric-expression)

{fn ABS(numeric-expression)}

参数

  • numeric-expression - 要返回其绝对值的数字。

ABS返回与数字表达式相同的数据类型。

描述

ABS返回绝对值,它总是或正数。 如果数值表达式不是一个数字(例如,字符串'abc',或空字符串),返回。 当传递值时,返回。

请注意,可以用作标量函数(带有花括号语法),也可以用作通用函数。

这个函数也可以通过调用方法从ObjectScript中调用:

  WRITE $SYSTEM.SQL.Functions.ABS(-0099)

示例

下面的例子展示了的两种形式:

SELECT ABS(-99) AS AbsGen,{fn ABS(-99)} AS AbsODBC

下面的例子展示了如何处理其他一些数字。 在调用之前, SQL将数字表达式转换为规范形式,删除前导和末尾的零,并计算指数。

SELECT ABS(007) AS AbsoluteValue

7
0
0 100
文章 姚 鑫 · 一月 5, 2022 3m read

第十五章 SQL窗口函数概述(二)

ROW子句

ROW子句可以与FIRST_VALUE(字段)和SUM(字段)窗口函数一起使用。 可以为其他函数指定它,但不执行任何操作(有或没有子句的结果相同)。

子句有两种语法形式:

ROWS framestart
ROWS BETWEEN framestart AND frameend

Framestart和有五个可能的值:

UNBOUNDED PRECEDING                    /* 从当前分区的开头开始 */
offset PRECEDING   /* 开始偏移当前行之前的行数 */
CURRENT ROW                                      /* 从当前行开始 */
offset FOLLOWING  /* 继续偏移当前行后面的行数 */
UNBOUNDED FOLLOWING                  /* 继续到当前分区的末尾 */

子句语法可以在两个方向上指定一个范围。 例如,在无界前面和1后面之间的行以及在1后面和无界前面之间的行是完全相等的。

框架的开始语法默认为作为范围的第二个未指定的边界。 因此,以下是等价的:

   
0
0 161
文章 姚 鑫 · 一月 4, 2022 6m read

第十四章 SQL窗口函数概述(一)

指定用于计算聚合和排名的每行“窗口框架”的函数。

窗口函数和聚合函数

在应用WHEREGROUP byHAVING子句之后,窗口函数对查询选择的行进行操作。

窗口函数将一组行中的一个(或多个)字段的值组合在一起,并在结果集中为生成的列中的每一行返回一个值。

虽然窗口函数与聚合函数类似,因为它们将多行结果组合在一起,但它们与聚合函数的不同之处在于,它们本身并不组合行。

窗函数的语法

窗口函数被指定为查询中的选择项。 窗口函数也可以在查询的子句中指定。

窗口函数执行与由子句、子句和ROWS子句指定的逐行窗口相关的任务,并为每一行返回一个值。 这三个子句都是可选的,但是如果指定了,必须按照以下语法中的顺序指定:

window-function() OVER (
                      [ PARTITION BY partfield ]
                      [ ORDER BY orderfield ]
                      [ ROWS framestart ] | [ ROWS BETWEEN framestart AND frameend ]
                      )
0
0 1563
文章 姚 鑫 · 一月 3, 2022 4m read

第十三章 SQL聚合函数 XMLAGG

一个聚合函数,它创建一个串接的值字符串。

大纲

XMLAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定XMLAGG返回string-expr的所有值的连接字符串。 如果没有指定关键字,这是默认值。
  • - 可选-一个子句,指定XMLAGG返回一个只包含唯一值的连接字符串。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常,这是要从其中检索数据的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回由中的所有值组成的串接字符串。 返回值的数据类型为,默认长度为。

  • 一个简单的(或)返回一个字符串,该字符串包含一个由所选行中的所有值组成的连接字符串。 为的行将被忽略。

以下两个示例都返回相同的单个值,即表的Home_State列中列出的所有值的串联字符串。

SELECT XMLAGG(ALL Home_State) AS ALL_State_Values
FROM Sample.Person

请注意,此连接字符串包含重复值。

0
0 318
文章 姚 鑫 · 一月 3, 2022 4m read

第十二章 SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP

返回数据集统计方差的聚合函数。

大纲

VARIANCE([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

VAR_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

VAR_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定统计方差函数返回表达式中所有值的方差。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选- DISTINCT子句,指定统计方差函数返回不同(唯一)表达式值的方差。 DISTINCT可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 任何有效的表达式。 通常是包含要分析方差的数据值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

这些函数返回

0
0 386
文章 姚 鑫 · 十二月 31, 2021 4m read

第十一章 SQL聚合函数 SUM

返回指定列值之和的聚合函数。

大纲

SUM([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定SUM返回表达式中所有值的和。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选-一子句,指定SUM返回表达式中不同(唯一)值的和。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 任何有效的表达式。 通常是包含要求和的数据值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

返回与相同的数据类型,但有如下异常:、和返回的数据类型都是。

注意:可以指定为聚合函数,也可以指定为窗口函数。 本参考页面描述了作为聚合函数的使用。 SUM作为一个窗口函数在窗口函数概述中描述。

描述

聚合函数返回表达式值的和。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

可以在引用表或视图的SELECT查询或子查询中使用。 可以在列表或子句中与普通字段值一起出现。

不能在子句中使用。 不能在的子句中使用,除非是子查询。

和所有聚合函数一样,可以接受一个可选的子句。 SUM(DISTINCT col1)

0
0 69
文章 姚 鑫 · 十二月 30, 2021 3m read

第十章 SQL聚合函数 STDDEV, STDDEV_SAMP, STDDEV_POP

返回数据集的统计标准差的聚合函数。

大纲

STDDEV([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

STDDEV_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

STDDEV_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定标准偏差函数返回表达式的所有值的标准偏差。如果未指定关键字,则这是默认值。
  • DISTINCT - 可选-指定标准偏差函数返回不同(唯一)表达式值的标准偏差的DISTINCT子句。DISTINCT可以指定子句,其中可以是单个字段,也可以是逗号分隔的字段列表。
  • - 任何有效的表达式。通常是包含要分析标准偏差的数据值的列的名称。
  • - 可选-列名或逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用HAVING子句中的条件。

除非表达式的数据类型为

0
0 352
文章 姚 鑫 · 十二月 29, 2021 3m read

[toc]

第九章 SQL聚合函数 MIN

返回指定列中的最小数据值的聚合函数。

大纲

MIN([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-将聚合函数应用于所有值。ALLMIN返回的值没有影响。提供它是为了与兼容。
  • - 可选-指定考虑每个唯一值。对MIN返回的值没有影响。它是为兼容性提供的。
  • - 任何有效的表达式。通常是包含要从中返回最小值的值的列的名称。
  • - 可选-列名或逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用HAVING子句中的条件。

返回与表达式相同的数据类型。

描述

聚合函数返回表达式的最小值(最小值)。通常,表达式是查询返回的多行中的字段名称(或包含一个或多个字段名称的表达式)。

可以在引用表或视图的SELECT查询或子查询中使用。MIN可以出现在选择列表或子句中,与普通字段值一起出现。

不能在子句中使用。除非是子查询,否则不能在联接的子句中使用。

与大多数其他聚合函数一样,不能应用于流字段。尝试这样做会生成错误。

与大多数其他聚合函数不同,ALL和关键字(包括在MIN中不执行任何操作。它们是为了与SQL-92兼容而提供的。

数据值

使用的指定字段可以是数字或非数字。对于数字数据类型字段,最小值定义为数值中的最低值;因此

0
0 304
文章 姚 鑫 · 十二月 28, 2021 3m read

第八章 SQL聚合函数 MAX

返回指定列中最大数据值的聚合函数。

大纲

MAX([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-将聚合函数应用于所有值。 ALLMAX返回的值没有影响。 它提供了兼容性。
  • - 可选-一个子句,指定考虑每个惟一值。 DISTINCT对返回的值没有影响。 它提供了兼容性。
  • - 任何有效的表达式。 通常是包含要返回的最大值的值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

返回与表达式相同的数据类型。

描述

聚合函数返回表达式的最大值。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

可以在引用表或视图的SELECT查询或子查询中使用。 MAX可以在列表或子句中与普通字段值一起出现。

不能在子句中使用。 不能在的子句中使用,除非是子查询。

与大多数其他聚合函数一样,不能应用于流字段。 尝试这样做会产生一个错误。

与大多数其他聚合函数不同,ALL和关键字,包括,在中不执行任何操作。 它们是为了的兼容性而提供的。

数据值

使用的指定字段可以是数字或非数字。 对于数字数据类型字段,

0
0 575
文章 姚 鑫 · 十二月 27, 2021 6m read

第七章 SQL聚合函数 LIST

创建逗号分隔值列表的聚合函数。

大纲

LIST([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定LIST返回string-expr的所有值的列表。 如果没有指定关键字,这是默认值。
  • - 可选-一个子句,指定LIST返回一个仅包含唯一的值的列表。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常是所选表中列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回指定列中以逗号分隔的值列表。

一个简单的(或)返回一个字符串,其中包含一个逗号分隔的列表,该列表由所选行中string-expr的所有值组成。 其中为空字符串()的行由逗号分隔列表中的占位符逗号表示。 为的行不包含在逗号分隔的列表中。 如果只有一个值,并且是空字符串(),返回空字符串。

返回一个字符串,该字符串包含一个逗号分隔的列表,该列表由所选行中的所有不同(唯一)值组成:LIST(DISTINCT col1)。 不包含在逗号分隔的列表中。 返回一个逗号分隔的列表,其中只包含那些

0
0 233
文章 姚 鑫 · 十二月 26, 2021 6m read

第六章 SQL聚合函数 JSON_ARRAYAGG

创建JSON格式值数组的聚合函数。

注:IRIS可用,IRIS之前版本不可用。

大纲

JSON_ARRAYAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定JSON_ARRAYAGG返回一个JSON数组,其中包含的所有值。 如果没有指定关键字,这是默认值。
  • - 可选-一个子句,指定JSON_ARRAYAGG返回一个仅包含唯一字符串值的数组。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常是所选表中列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回指定列中值的JSON格式数组。

一个简单的(或)返回一个数组,其中包含所选行中的所有值。 字符串为空字符串的行由数组中的()表示。 字符串为NULL的行不包含在数组中。 如果只有一个字符串值,并且是空字符串(),将返回数组。 如果所有的值为, 返回一个空的数组。

返回一个数组,由所选行中string-expr的所有不同(唯一)值组成:。 字符串不包含在数组中。 返回一个数组,该数组只包含记录中

0
0 431
文章 姚 鑫 · 十二月 25, 2021 5m read

第五章 SQL聚合函数 %DLIST

创建值列表的聚合函数。

大纲

%DLIST([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定%DLIST返回string-expr的所有值的列表。如果未指定关键字,则这是默认值。
  • - 可选- 子句,指定%DLIST返回一个结构化的,其中只包含唯一的值。 可以指定子句,其中可以是单个字段,也可以是用逗号分隔的字段列表。
  • - 计算结果为字符串的SQL表达式。 通常是所选表中列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在HAVING子句中的条件。

描述

聚合函数返回一个ObjectScript 结构,其中包含指定列中的值作为列表元素。

一个简单的(或)返回列表,该列表由所选行中string-expr的所有非值组成。 为的行不会作为元素包含在列表结构中。

返回一个列表,由所选行中的所有不同(唯一)非null值组成:。 不作为元素包含在结构中。 返回一个元素的,其中只包含那些字段值在值不同(唯一)的记录中。 但是请注意,不同的值可能包含一个单独的NULL值。

%DLIST 和 %SelectMode

可以使用属性来指定

0
0 140
文章 姚 鑫 · 十二月 24, 2021 4m read

第四章 SQL聚合函数 COUNT(二)

权限

要使用COUNT(*),必须对指定的表具有表级别的SELECT权限。 要使用COUNT(column-name),必须对指定的列具有列级的权限,或者对指定的表具有表级的权限。 可以通过调用命令来确定当前用户是否具有权限。 可以通过调用方法来确定指定的用户是否具有表级权限。

性能

为了获得最优的性能,你应该按照以下方式定义索引:

  • 对于COUNT(*),如果需要,定义位图扩展索引。 这个索引可能是在创建表时自动定义的。
  • 对于COUNT(fieldname),为指定字段定义一个位片索引。 查询计划优化自动应用默认的排序规则到fieldname

未提交事务所做的更改

与所有聚合函数一样,COUNT总是返回数据的当前状态,包括未提交的更改,而不管当前事务的隔离级别如何,如下所示:

  • 插入和更新的记录的计数,即使这些更改尚未提交并可能回滚。
  • 不计算已删除的记录,即使这些删除还没有提交并且可以回滚。

示例

下面的示例返回中的总行数:

SELECT COUNT(*) AS TotalPersons
     FROM Sample.Person

下面的示例返回中的姓名、配偶和最喜欢的颜色的计数。这些计数不同,因为有些配偶和字段为;不计算:

SELECT COUNT(Name) AS People,
       COUNT(Spouse) AS PeopleWithSpouses,
       COUNT(FavoriteColors) AS PeopleWithColorPref
FROM Sample.Person
0
0 114
文章 姚 鑫 · 十二月 23, 2021 5m read

第三章 SQL聚合函数 COUNT(一)

返回表或指定列中的行数的聚合函数。

大纲

COUNT(*)

COUNT([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • * - 指定应计算所有行以返回指定表中的总行数。 COUNT(*)不接受其他参数,不能与ALL或关键字一起使用。 不接受表达式参数,也不使用任何特定列的信息。 返回指定表或视图中的行数,但不消除重复项。 它分别计数每一行,包括包含值的行。
  • - 可选-指定返回表达式中所有值的计数。 如果没有指定关键字,这是默认值。
  • DISTINCT - 可选-一个子句,指定COUNT返回表达式的不同(唯一)值的计数。 不能与流字段一起使用。 可以指定子句,其中可以是单个列名,也可以是用逗号分隔的列名列表。
  • - 任何有效的表达式。 通常是包含要计算的数据值的列的名称。
  • - 可选-列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选-应用在子句中的条件。

返回数据类型。

描述

聚合函数有两种形式:

  • 以整数形式返回表达式中值的数目的计数。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。 不计算值。 它可以选择计数或不计数重复的字段值。 总是返回数据类型 长度为,精度为,刻度为。
0
0 668
文章 姚 鑫 · 十二月 22, 2021 6m read

第二章 SQL聚合函数 AVG

返回指定列值的平均值的聚合函数。

大纲

AVG([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

参数

  • ALL - 可选-指定AVG返回表达式所有值的平均值。 如果没有指定关键字,则为默认值。
  • DISTINCT - 可选 - 子句,指定AVG只计算一个值的唯一实例的平均值。 可以指定子句,其中可以是单个字段,也可以是逗号分隔的字段列表。
  • - 任何有效的表达式。 通常是包含要取平均值的数据值的列的名称。
  • - 可选—列名或以逗号分隔的列名列表。
  • %AFTERHAVING - 可选 - 应用在HAVING子句中找到的条件。

返回或数据类型。 如果是类型,返回; 否则,它返回。

描述

聚合函数返回表达式值的平均值。 通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。

可以用于引用表或视图的SELECT查询或子查询。 AVG可以出现在列表或子句中,与普通字段值一起出现。

不能在子句中使用。 不能在的子句中使用,除非是子查询。

像所有聚合函数一样,可以带有一个可选的子句。 AVG(DISTINCT col1)仅对不同(唯一)的字段值进行平均。 仅对值不同(唯一)的记录中的字段值进行平均值。 但是请注意,不同的

0
0 508
文章 姚 鑫 · 十二月 21, 2021 7m read

第一章 聚合函数概述

计算列的所有值并返回单个聚合值的函数。

支持聚合函数

聚合函数执行与单个列中的一个或多个值相关的任务,并返回单个值。 支持的功能有:

  • SUM - 返回指定列的值的和。
  • AVG - 返回指定列值的平均值。
  • COUNT - 返回表中的行数,或指定列中非空值的个数。
  • MAX - 返回指定列中使用的最大值。
  • MIN - 返回指定列中使用的最小值。
  • VARIANCE,, - 返回指定列的值的统计方差。
  • , , - 返回指定列值的统计标准偏差。
  • - 以逗号分隔的列表形式返回指定列中使用的所有值。
  • - 返回指定列中使用的所有值,作为 IRIS列表结构中的元素。
  • - 将指定列中使用的所有值作为连接字符串返回。
  • - 返回指定列中使用的所有值作为JSON格式数组。

可以使用命令定义其他用户定义的聚合函数。

聚合函数忽略为的字段。 例如,LIST%DLIST不包含指定字段为的行的元素。 只计算指定字段的非空值。

聚合函数(除外)不能应用于流字段。 这样做会产生一个错误。 可以使用COUNT来计数流字段值,但有一些限制。

注意:聚合函数类似于窗口函数。 但是,聚合函数从一组行中获取列的值,并将结果作为单个值返回。 窗口函数从一组行中获取一列的值,并为每一行返回一个值。 聚合函数可以在窗口函数中指定。 不能在聚合函数中指定窗口函数。 既可以用作聚合函数,也可以用作窗口函数。

0
0 222
文章 姚 鑫 · 十二月 19, 2021 5m read

第二十章 SQL谓词 %STARTSWITH(二)

首尾空格

在大多数情况下,%STARTSWITH将前导空格视为与任何其他字符相同的字符。 例如,%STARTSWITH ' B'可用于选择只有一个前导空白后跟字母B的字段值。然而,只包含空白的子字符串不能选择前导空白; 它选择非空值。

尾随空格的行为取决于数据类型和排序规则类型。 忽略定义为SQLUPPER的字符串子串的尾随空格。 不会忽略数字、日期或列表子字符串中的尾随空格。

在下面的示例中,将结果集限制为以开头的名称。 因为Name是一个字符串数据类型,子字符串的末尾空格将被忽略:

SELECT Name FROM Sample.Person
WHERE Name %STARTSWITH 'M      '

在下面的示例中,从结果集中删除所有行,因为对于数值,子字符串的末尾空格不会被忽略:

SELECT Name,Age FROM Sample.Person
WHERE Age %STARTSWITH '6      '

在下面的示例中,从结果集中删除所有行,因为对于列表值,子字符串中的末尾空不会被忽略:

SELECT Name,FavoriteColors FROM Sample.Person
WHERE %EXTERNAL(FavoriteColors) %STARTSWITH 'Blue '
0
0 94
文章 姚 鑫 · 十二月 18, 2021 5m read

第十九章 SQL谓词 %STARTSWITH(一)

用指定初始字符的子字符串匹配值。

大纲

scalar-expression %STARTSWITH substring

参数

  • scalar-expression - 将其值与子字符串进行比较的标量表达式(最常见的是数据列)。
  • substring - 解析为包含与标量表达式中的值匹配的第一个或多个字符的字符串或数字的表达式。

描述

%STARTSWITH谓词允许选择以子字符串中指定的字符开头的数据值。 如果不匹配任何标量表达式值,返回空字符串。 无论显示模式如何,这个匹配总是在逻辑(内部存储)数据值上执行。

下面的示例选择所有以“M”开头的名称:

SELECT Name FROM Sample.MyTest WHERE Name %STARTSWITH 'M'

可以用来颠倒谓词的意思。 下面的示例选择除了以开头的名称以外的所有名称:

SELECT Name FROM Sample.MyTest WHERE NOT Name %STARTSWITH 'M'

排序类型

使用与它匹配的字段相同的排序规则类型。 默认情况下,字符串数据类型字段是用SQLUPPER排序规则定义的,它不区分大小写。

在下面的例子中,被定义为; 子字符串匹配不区分大小写:

SELECT UpName FROM Sample.MyTest WHERE UpName %STARTSWITH 'mo'
0
0 239
文章 姚 鑫 · 十二月 17, 2021 1m read

第十八章 SQL谓词 SOME

将值与子查询中的至少一个匹配值匹配。

大纲

scalar-expression comparison-operator SOME (subquery)

参数

  • scalar-expression - 将其值与子查询生成的结果集进行比较的标量表达式(最常见的是数据列)。
  • comparison-operator - 以下比较操作符之一:=(等于),<>或(不等于),(大于),(大于或等于),(包含),或(跟随)。
  • - 一个用括号括起来的子查询,它返回一个用于与标量表达式比较的结果集。

描述

关键字与比较操作符一起创建谓词(量化比较条件),如果标量表达式的值与子查询检索到的一个或多个对应值匹配,则该谓词为真。 谓词将单个标量表达式项与单个子查询项进行比较。 具有多个选择项的子查询将生成错误。

注意:和关键字是同义词。

示例

下面的例子选择了居住在密西西比河以西任何一个州的工资超过75,000美元的员工:

SELECT Name,Salary,Home_State FROM Sample.Employee
WHERE Salary > 75000
AND Home_State = SOME
 (SELECT State FROM Sample.USZipCode
  WHERE Longitude < -93)
ORDER BY Home_State
0
0 102
文章 姚 鑫 · 十二月 16, 2021 5m read

第十七章 SQL谓词 %PATTERN

用包含字面值、通配符和字符类型代码的模式字符串匹配值。

大纲

scalar-expression %PATTERN pattern

参数

  • scalar-expression - 一个标量表达式(最常见的是数据列),它的值正在与模式进行比较。
  • pattern - 一个带引号的字符串,表示要与标量表达式中的每个值匹配的字符模式。 模式字符串可以包含双引号括起来的文字字符、指定字符类型的字母代码以及数字和作为通配符的句点(.)字符。

描述

%PATTERN谓词允许将字符类型代码和字面值的模式匹配到由标量表达式提供的数据值。 如果模式匹配完整的标量表达式值,则返回该值。 如果没有完全匹配任何标量表达式值,将返回空字符串。

使用与ObjectScript模式匹配操作符相同的模式代码( 操作符)。 模式由一对或多对重复计数和一个值组成。 重复计数可以是整数,句点(.)表示“任意数量的字符”,或者使用句点和整数的组合指定的范围。 值可以是字符类型代码字母或字符串字面值(在引号中指定)。

请注意,一个模式通常由多个重复/值对组成,因为该模式必须与整个数据值完全匹配。因此,许多模式都以“.E”对结尾,这意味着数据值的其余部分可以由任意数量的任意类型的字符组成。

模式匹配对的几个简单示例:

  • 1L
0
0 175