1 关注者 · 485 帖子

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

文章 姚 鑫 · 四月 7, 2022 1m read

第105章 SQL函数 %OID

返回 ID 字段的 OID 的标量函数。

大纲

%OID(id_field)

参数

  • id_field - ID 字段或引用字段的字段名称。

描述

%OID 采用字段名称并返回对象的完整 OID(对象 ID)。该字段必须是 ID 字段或引用字段(外键字段)。在 id_field 中指定任何其他类型的字段会生成 SQLCODE -1 错误。

示例

以下示例显示了与引用字段一起使用的 %OID

SELECT Name, Spouse, %OID(Spouse)
FROM Sample.Person
WHERE Spouse IS NOT NULL

以下嵌入式 SQL 示例显示了与引用字段一起使用的 %OID

/// d ##class(PHA.TEST.SQLFunction).Oid()
ClassMethod Oid()
{
	&sql(SELECT Name, Spouse, %OID(Spouse)
			INTO :n,:s,:soid
		FROM Sample.Person)
	w !,"Name is:",n
	w !,"Spouse name is:",s
	w !,"Spouse OID is:",soid
}
0
0 100
文章 姚 鑫 · 四月 6, 2022 2m read

第104章 SQL函数 %ODBCOUT

ODBC 格式返回表达式的格式转换函数。

大纲

%ODBCOUT(expression)

%ODBCOUT expression

参数

  • expression - 要转换的表达式。字段名称、包含字段名称的表达式或以可转换数据类型(例如 DATE%List)返回值的函数。不能是流字段。

描述

%ODBCOUT 在通过字段或数据类型的 LogicalToOdbc 方法传递值后以 ODBC 格式返回表达式。 ODBC 格式是可以通过 ODBC 呈现数据的格式。当数据暴露给 ODBC/SQL 时使用这种格式。可用的格式对应于 ODBC 定义的格式。

%ODBCOUT 通常用于 SELECT 列表选择项。它可以在 WHERE 子句中使用,但不鼓励这种使用,因为使用 %ODBCOUT 会阻止在指定字段上使用索引。

应用 %ODBCOUT 将列标题名称更改为诸如“Expression_1”之类的值;因此,通常需要指定列名别名,如下面的示例所示。

%ODBCOUT 是否转换日期取决于日期字段或函数返回的数据类型。 %ODBCOUT 转换 CURDATECURRENT_DATECURTIMECURRENT_TIME 值。它不转换 CURRENT_TIMESTAMPGETDATEGETUTCDATENOW$HOROLOG 值。

示例

0
0 115
文章 姚 鑫 · 四月 5, 2022 1m read

第103章 SQL函数 %ODBCIN

以逻辑格式返回表达式的格式转换函数。

大纲

%ODBCIN(expression)

%ODBCIN expression

参数

  • expression - 要转换的表达式。

描述

%ODBCIN 在通过字段或数据类型的 OdbcToLogical 方法传递值后以逻辑格式返回表达式。逻辑格式是数据的内存格式(执行操作的格式)。

%ODBCIN 是一个 SQL 扩展。

示例

以下示例显示了同一字段的默认显示格式、%ODBCIN%ODBCOUT 格式。

SELECT FavoriteColors,%ODBCIN(FavoriteColors) AS InVal,
%ODBCOUT(FavoriteColors) AS OutVal
FROM Sample.Person

以下示例在 WHERE 子句中使用 %ODBCIN

SELECT Name,DOB,%ODBCOUT(DOB) AS Birthdate
FROM Sample.Person
WHERE DOB BETWEEN %ODBCIN('2000-01-01') AND %ODBCIN('2018-01-01') 
0
0 120
文章 姚 鑫 · 四月 4, 2022 2m read

第102章 SQL函数 %OBJECT

标量函数,它打开一个流对象并返回相应的 oref

大纲

%OBJECT(stream)

参数

  • stream - 作为流字段名称的表达式。

描述

%OBJECT 用于打开一个流对象并返回流字段的 oref(对象引用)。

流字段上的 SELECT 返回流字段的完全形成的 oid(对象 ID)值。流字段上的 SELECT %OBJECT 返回流字段的 oref(对象引用)。这在以下示例中显示,其中 NotesPicture 都是流字段:

0
0 137
文章 姚 鑫 · 四月 3, 2022 3m read

第101章 SQL函数 NVL

测试 NULL 并返回适当表达式的函数。

大纲

NVL(check-expression,replace-expression)

参数

  • check-expression - 要计算的表达式。
  • replace-expression - 如果 check-expressionNULL,则返回的表达式。

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

描述

NVL 计算检查表达式并返回以下两个值之一:

  • 如果 check-expressionNULL,则返回 replace-expression
  • 如果 check-expression 不为 NULL,则返回 check-expression

参数 check-expressionreplace-expression 可以具有任何数据类型。如果它们的数据类型不同,SQL 会将 replace-expression 转换为 check-expression 的数据类型,然后再进行比较。返回值的数据类型始终与 check-expression 的数据类型相同,除非 check-expression 为字符数据,此时返回值的数据类型为 VARCHAR2。

请注意,NVL 支持 Oracle 兼容性,并且与 ISNULL 函数相同。

日期和时间显示转换

0
0 130
文章 姚 鑫 · 四月 2, 2022 2m read

第100章 SQL函数 NULLIF

如果两个表达式具有相同的值,则返回 NULL 的函数。

大纲

NULLIF(expression1,expression2)

参数

  • expression1 - 表达式,可以是列名、数字或字符串文字、主变量或另一个标量函数的结果。
  • expression2 - 表达式,可以是列名、数字或字符串文字、主变量或另一个标量函数的结果。

NULLIF 返回与 expression1 相同的数据类型。

描述

如果 expression1 的值等于 expression2 的值,则 NULLIF 函数返回 NULL。否则,它返回 expression1 值。

NULLIF 等价于:

SELECT CASE 
WHEN value1 = value2 THEN NULL
ELSE value1
END
FROM MyTable

NULL 处理函数比较

下表显示了各种 SQL 比较函数。如果逻辑比较测试为 TrueAB 相同),则每个函数返回一个值,如果逻辑比较测试为 FalseAB 不同),则返回另一个值。这些函数允许执行 NULL 逻辑比较。不能在实际相等(或不相等)条件比较中指定 NULL

0
0 101
文章 姚 鑫 · 四月 1, 2022 4m read

第九十九章 SQL函数 NOW

返回当前本地日期和时间的日期/时间函数。

大纲

NOW()

{fn NOW}
{fn NOW()}

描述

NOW 不接受任何参数。参数括号对于 ODBC 标量语法是可选的;它们对于 SQL 标准函数语法是必需的。

NOW 以时间戳的形式返回该时区的当前本地日期和时间;它会根据本地时间变体进行调整,例如夏令时。

NOW 可以返回 %TimeStamp 数据类型格式 (yyyy-mm-dd hh:mm:ss.ffff) 或 %PosixTime 数据类型格式(编码的 64 位有符号整数)的时间戳。以下规则确定返回的时间戳格式:

0
0 118
文章 姚 鑫 · 三月 31, 2022 2m read

第九十八章 SQL函数 MONTHNAME

返回日期表达式的月份名称的日期函数。

大纲

{fn MONTHNAME(date-expression)}

参数

  • date-expression - 计算结果为 日期整数、ODBC 日期或时间戳的表达式。此表达式可以是列名、另一个标量函数的结果或日期或时间戳字面量。

描述

MONTHNAME 将日期整数、$HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳作为输入。

日期表达式时间戳可以是数据类型 %Library.PosixTime(编码的 64 位有符号整数),也可以是数据类型 %Library.TimeStamp (yyyy-mm-dd hh:mm:ss.fff)

时间戳的时间部分不被评估,可以省略。

MONTHNAME 返回相应日历月的名称,从一月到十二月。返回值是一个字符串,最大长度为 15。

MONTHNAME 检查提供的日期是否有效。年份必须介于 00019999(含)之间、月份 0112 以及适合该月的日期(例如,02/29 仅在闰年有效)。如果日期无效,MONTHNAME 会发出 SQLCODE -400<ILLEGAL VALUE>错误。

月份名称默认为全长美式英语月份名称。要更改这些月份名称值,请使用带有 MONTH_NAME 选项的 SET OPTION 命令。

0
0 70
文章 姚 鑫 · 三月 30, 2022 2m read

第九十七章 SQL函数 MONTH

日期函数,它将月份作为日期表达式的整数返回。

大纲

MONTH(date-expression)

{fn MONTH(date-expression)}

描述

  • date-expression - 表达式,它是列的名称、另一个标量函数的结果,或者是日期或时间戳文字。

描述

MONTH 返回一个指定月份的整数。月份整数是针对 日期整数、$HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳计算的。

日期表达式时间戳可以是数据类型 %Library.PosixTime(编码的 64 位有符号整数),也可以是数据类型 %Library.TimeStamp (yyyy-mm-dd hh:mm:ss.fff)。

日期字符串的月份 (mm) 部分必须是 112 范围内的整数。前导零在输入时是可选的。输出时抑制前导零和尾随零。

date-expression 的日期部分经过验证,并且必须包含 112 范围内的月份以及指定月份和年份的有效日期值。否则,将生成 SQLCODE -400 错误 <ILLEGAL VALUE>

date-expression 的时间部分未经验证,可以省略。

请注意,MONTH 可以作为 ODBC 标量函数(使用大括号语法)或作为 SQL 通用函数调用。

0
0 88
文章 姚 鑫 · 三月 29, 2022 2m read

第九十六章 SQL函数 MOD

注:IRIS可用,非IRIS版本不可用。

标量数值函数,返回一个数除以另一个数的模数(余数)。

大纲

MOD(dividend,divisor)

{fn MOD(dividend,divisor)}

参数

  • dividend - 数字,它是除法的分子(除数)。
  • divisor - 数字,它是除法的分母(除数)。

MOD 返回 NUMERIC 数据类型,除非被除数是数据类型 DOUBLE。如果dividendDOUBLE,则 MOD 返回 DOUBLE

描述

MOD 返回除数除数的数学余数(模数)。

MOD 可以指定为标准标量函数或带有大括号语法的 ODBC 标量函数。

  • 如果被除数和除数为正数,则返回正数模数或零。
  • 如果被除数和除数都是负数,则返回负模数或零。
  • 如果被除数或除数为 NULL,则返回 NULL
  • 如果除数为 0,它将生成带有 %msg<DIVIDE>错误的 SQLCODE -400
  • 如果除数大于被除数,则返回被除数。

MOD(任一语法形式)报告的精度与算术表达式除数/除数的精度报告相同。

ANSI 运算符优先级

具有单个负操作数的 MOD 函数的行为取决于 Apply ANSI Operator Precedence 配置设置:

0
0 142
文章 姚 鑫 · 三月 28, 2022 3m read

第九十五章 SQL函数 MINUTE

返回日期时间表达式的分钟的时间函数。

大纲

{fn MINUTE(time-expression)}

参数

  • time-expression - 作为列名、另一个标量函数的结果或字符串或数字文字的表达式。它必须解析为日期时间字符串或时间整数,其中基础数据类型可以表示为 %Time%TimeStamp%PosixTime

描述

MINUTE 返回一个整数,指定给定时间或日期时间值的分钟数。为 $HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳计算分钟。

时间表达式时间戳可以是数据类型 %Library.PosixTime(编码的 64 位有符号整数),也可以是数据类型 %Library.TimeStamp (yyyy-mm-dd hh:mm:ss.fff)。

要更改默认时间格式,请使用 SET OPTION 命令。

请注意,可以提供时间整数(经过的秒数),但不能提供时间字符串 (hh:mm:ss)。必须提供日期时间字符串 (yyyy-mm-dd hh:mm:ss)。

0
0 109
文章 姚 鑫 · 三月 27, 2022 2m read

第九十四章 SQL函数 %MINUS

将数字转换为规范整理格式,然后反转符号的整理函数。

大纲

%MINUS(expression)

%MINUS expression

参数

  • expression - 表达式,可以是列名、数字或字符串文字、算术表达式或另一个函数的结果,其中基础数据类型可以表示为任何字符类型。

描述

%MINUS 将数字或数字字符串转换为规范形式,反转符号,然后以数字排序规则返回这些表达式值。

%MINUS%PLUS 在功能上是相同的,只是 %MINUS 反转了符号。它为解析为正数的任何数字添加减号前缀,并从解析为负数的任何数字中删除减号。零从不签名。

一个数字可以包含前导零和尾随零、多个前导加号和减号、一个小数点指示符 (.) 和 E 指数指示符。在规范形式中,执行所有算术运算,扩展指数,将符号解析为单个前导减号或无符号,并去除前导零和尾随零。

可以使用或不使用封闭字符串分隔符来指定数字文字。如果字符串包含非数字字符,%MINUS 会在第一个非数字字符处截断数字,并以规范形式返回数字部分。非数字字符串(任何以非数字字符开头的字符串)返回为 0%MINUS 也将 NULL 作为 0 返回。

%MINUS 是一个 SQL 扩展,用于 SQL 查找查询。

可以使用 %SYSTEM.Util 类的 Collation() 方法在 ObjectScript 中执行相同的排序规则转换:

0
0 100
文章 姚 鑫 · 三月 26, 2022 2m read

第九十三章 SQL函数 LTRIM

字符串函数,它返回一个删除了前导空格的字符串。

大纲

LTRIM(string-expression)

{fn LTRIM(string-expression)}

参数

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

描述

LTRIM 从字符串表达式中删除前导空格,并将字符串作为 VARCHAR 类型返回。如果 string-expressionNULL,则 LTRIM 返回 NULL。如果 string-expression 是一个完全由空格组成的字符串,则 LTRIM 返回空字符串 ('')

LTRIM 留下尾随空格;要删除尾随空格,请使用 RTRIM。要删除任何类型的前导和/或尾随字符,请使用 TRIM。要使用前导空格或其他字符填充字符串,请使用 LPAD。要创建一串空白,请使用 SPACE

请注意,LTRIM 可用作 ODBC 标量函数(使用大括号语法)或 SQL 通用函数。

示例

以下嵌入式 SQL 示例从字符串中删除了五个前导空格。它留下五个尾随空白:

0
0 84
文章 姚 鑫 · 三月 25, 2022 2m read

[toc]

第九十二章 SQL函数 LPAD

字符串函数,它返回一个左填充到指定长度的字符串。

大纲

LPAD(string-expression,length[,padstring])

参数

  • string-expression - 字符串表达式,可以是列名、字符串文字、主机变量或另一个标量函数的结果。可以是可转换为 VARCHAR 数据类型的任何数据类型。字符串表达式不能是流。
  • length - 一个整数,指定返回的字符串中的字符数。
  • padstring - 可选 — 由一个字符或一串字符组成的字符串,用于填充输入字符串表达式。 padstring 字符或字符附加到 string-expression 的左侧,以提供创建长度字符的输出字符串所需的尽可能多的字符。 padstring 可以是字符串文字、列、主机变量或另一个标量函数的结果。如果省略,则默认为空格字符。

描述

LPAD 用前导填充字符填充字符串表达式。它返回填充到长度字符数的字符串的副本。如果字符串表达式的长度超过 length 个字符,则返回字符串被截断为 length 个字符。

如果 string-expressionNULL,则 LPAD 返回 NULL。如果 string-expression 是空字符串('') LPAD 返回一个完全由填充字符组成的字符串。返回的字符串是 VARCHAR 类型。

0
0 129
文章 姚 鑫 · 三月 24, 2022 2m read

第九十一章 SQL函数 LOWER

将字符串表达式中的所有大写字母转换为小写字母的大小写转换函数。

大纲

LOWER(string-expression)

参数

  • string-expression - 要将其字符转换为小写的字符串表达式。表达式可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR)。

描述

LOWER 函数将大写字母转换为小写字母以供显示。这是 UPPER 函数的逆函数。 LOWER 对非字母字符没有影响。它保留不变的标点符号、数字以及前导和尾随空格。

LOWER 不强制将数字解释为字符串。 SQL 将数字转换为规范形式,删除前导零和尾随零。指定为字符串的数字不会转换为规范形式,并保留前导零和尾随零。

LCASE 函数也可用于将大写字母转换为小写字母。

LOWER 对排序没有影响。 %SQLUPPER 函数是 SQL 中为不区分大小写的排序规则转换数据值的首选方法。

示例

以下示例以小写字母返回每个人的姓名:

SELECT Name,LOWER(Name) AS LowName
     FROM Sample.Person

LOWER 也适用于 Unicode(非 ASCII)字母字符,如以下嵌入式 SQL 示例所示,它将希腊字母从大写转换为小写:

0
0 115
文章 姚 鑫 · 三月 23, 2022 1m read

第九十章 SQL函数 LOG10

标量数值函数,它返回给定数值表达式的以 10 为底的对数。

大纲

{fn LOG10(expression)}

参数

  • expression - 数值表达式。

LOG10 返回 NUMERICDOUBLE 数据类型。如果表达式为 DOUBLE 数据类型,则 LOG10 返回 DOUBLE;否则,它返回 NUMERIC

描述

LOG10 返回表达式的以 10 为底的对数值。LOG10 返回一个精度为 21、小数位数为 18 的值。

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

示例

以下示例返回整数的以 10 为底的对数:

SELECT {fn LOG10(5)} AS Log10

0.698970004336018805

以下嵌入式 SQL 示例返回整数 110 的以 10 为底的对数值:

0
0 83
文章 姚 鑫 · 三月 22, 2022 2m read

第八十九章 SQL函数 LOG

返回给定数值表达式的自然对数的标量数值函数。

大纲

{fn LOG(expression)}

参数

  • expression - 数值表达式。

LOG 返回 NUMERICDOUBLE 数据类型。如果表达式为 DOUBLE 数据类型,则 LOG 返回 DOUBLE;否则,它返回 NUMERIC

描述

LOG 返回表达式的自然对数(以 e 为底)。 LOG 返回一个精度为 21、小数位数为 18 的值。

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

示例

以下示例返回整数的自然对数:

SELECT {fn LOG(5)} AS Logarithm

1.609437912434100375

以下嵌入式 SQL 示例显示了整数 110LOGEXP 函数之间的关系:

请注意,此处需要 ROUND 函数来纠正由系统计算限制引起的非常小的差异。在上面的示例中,ROUND 被任意设置为 12 位十进制数字。

0
0 132
文章 姚 鑫 · 三月 21, 2022 3m read

第八十八章 SQL函数 $LISTTOSTRING

从列表创建字符串的列表函数。

大纲

$LISTTOSTRING(list[,delimiter])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • delimiter - 可选 — 插入以分隔子字符串的分隔符。分隔符可以是一个或多个字符,指定为带引号的字符串。要连接不带分隔符的子字符串,请指定空字符串 ('')。如果不指定分隔符,则默认为逗号 (,) 字符。

描述

$LISTTOSTRING 采用 列表并将其转换为字符串。在结果字符串中,列表的元素由分隔符分隔。

列表以不使用分隔符的编码格式表示数据。因此,列表可以包含所有可能的字符,并且非常适合位串数据。 $LISTTOSTRING 将此列表转换为带有分隔元素的字符串。它留出一个指定的字符(或字符串)作为分隔符。可以使用 $PIECE 函数处理这些分隔元素。

注意:此处指定的分隔符不得出现在源数据中。 不区分用作分隔符的字符和用作数据字符的相同字符。

0
0 158
文章 姚 鑫 · 三月 20, 2022 4m read

第八十七章 SQL函数 $LISTSAME

比较两个列表并返回布尔值的列表函数。

大纲

$LISTSAME(list1,list2)

参数

  • list1 - 计算结果为有效列表的表达式。
  • list2 - 计算结果为有效列表的表达式。

描述

$LISTSAME 比较两个列表的内容,如果列表相同则返回 1。如果列表不相同,则 $LISTSAME 返回 0$LISTSAME 逐个元素地比较两个列表。对于两个相同的列表,它们必须包含相同数量的元素,并且 list1 中的每个元素必须与 list2 中的相应元素匹配。

$LISTSAME 使用它们的字符串表示来比较列表元素。 $LISTSAME 比较区分大小写。 $LISTSAME 按从左到右的顺序逐个元素地比较两个列表。因此,$LISTSAME 在遇到第一个不匹配的列表元素对时返回值 0;它不检查后续项目以确定它们是否是有效的列表元素。

此函数返回 SMALLINT 类型的数据。

参数

list (list1 and list2)

0
0 103
文章 姚 鑫 · 三月 19, 2022 4m read

第八十六章 SQL函数 $LISTLENGTH

返回指定列表中元素数量的列表函数。

大纲

$LISTLENGTH(list)

参数

  • list- 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。您可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。您可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。

描述

$LISTLENGTH 返回列表中元素的数量。

此函数返回 SMALLINT 类型的数据。

示例

以下嵌入式 SQL 示例返回 3,因为列表中有 3 个元素:

/// d ##class(PHA.TEST.SQLFunction).ListLength()
ClassMethod ListLength()
{
	s a = $lb("Red", "Blue", "Green")
	&sql(
		SELECT $LISTLENGTH(:a) INTO :b
	)
	if SQLCODE '= 0 {
		w !,"Error code;",SQLCODE 
	} else {
		w !,"The number of elements is ",b 
	}
}
0
0 116
文章 姚 鑫 · 三月 18, 2022 5m read

第八十五章 SQL函数 $LISTGET

返回列表中的元素或指定默认值的列表函数。

大纲

$LISTGET(list[,position[,default]])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • position - 可选 — 解释为指定列表中的位置的表达式。
  • default - 可选 — 如果列表元素具有未定义的值,则该表达式提供要返回的值。

描述

$LISTGET 将指定列表中的请求元素作为标准字符串返回。如果位置参数的值引用不存在的成员或标识具有未定义值的元素,则返回指定的默认值。

$LISTGET 函数与 $LIST 函数的单参数和双参数形式相同,只是在导致 $LIST 返回空字符串的条件下,$LISTGET 返回默认值。

此函数返回 VARCHAR 类型的数据。

可以使用 $LISTGET 从串行容器字段中检索字段值。在以下示例中,Home 是一个串行容器字段,其第三个元素是 Home_State

SELECT Name,$LISTGET(Home,3) AS HomeState
FROM Sample.Person

参数

list

0
0 107
文章 姚 鑫 · 三月 17, 2022 2m read

第八十四章 SQL函数 $LISTFROMSTRING

从字符串创建列表的列表函数。

大纲

$LISTFROMSTRING(string[,delimiter])

参数

  • string - 要转换为 列表的字符串。此字符串包含一个或多个元素,由分隔符分隔。分隔符不会成为生成的列表的一部分。
  • delimiter - 可选 — 用于分隔字符串中的子字符串(元素)的分隔符。将分隔符指定为带引号的字符串。如果未指定分隔符,则默认为逗号 (,) 字符。

描述

$LISTFROMSTRING 接受一个包含分隔元素的带引号的字符串并返回一个列表。列表以不使用分隔符的编码格式表示数据。因此,列表可以包含所有可能的字符,并且非常适合位串数据。使用 ObjectScript 和 SQL $LIST 函数处理列表。

参数

string

字符串文字(用单引号括起来)、数字或计算结果为字符串的变量或表达式。此字符串可以包含一个或多个子字符串(元素),由分隔符分隔。字符串数据元素不得包含分隔符(或字符串),因为分隔符不包含在输出列表中。

delimiter

用于在输入字符串中分隔子字符串的字符(或字符串)。它可以是数字或字符串文字(括在单引号中)、变量的名称或计算结果为字符串的表达式。

0
0 144
文章 姚 鑫 · 三月 16, 2022 4m read

第八十三章 SQL函数 $LISTFIND

列表函数,用于在指定列表中搜索请求的值。

大纲

$LISTFIND(list,value[,startafter])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。您可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • value - 包含搜索元素的表达式。一个字符串。
  • startafter - 可选 — 解释为列表位置的整数表达式。搜索从该位置之后的元素开始。0–1 是有效值; –1 从不返回元素。零是默认值。

描述

$LISTFIND 在指定列表中搜索请求值的第一个实例。搜索从 startafter 参数指示的位置之后的元素开始。如果省略 startafter 参数,则 $LISTFIND 假定 startafter 值为 0 并从第一个元素(元素 1)开始搜索。如果找到该值,则 $LISTFIND 返回匹配元素的位置。如果未找到该值,则 $LISTFIND 返回 0。如果 startafter 参数的值引用不存在的列表成员,则 $LISTFIND 函数也将返回 0

此函数返回 SMALLINT 类型的数据。

示例

0
0 151
文章 姚 鑫 · 三月 15, 2022 4m read

第八十二章 SQL函数 $LISTDATA

列表函数,指示指定元素是否存在并具有数据值。

大纲

$LISTDATA(list[,position])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。您可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。您可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • position - 可选 — 指定列表中元素的整数表达式。

描述

$LISTDATA 检查列表中请求元素中的数据。如果位置参数指示的元素在列表中并且具有数据值,则 $LISTDATA 返回值 1。如果元素不在列表中或没有数据值,则 $LISTDATA 返回值 0。

此函数返回 SMALLINT 类型的数据。

参数

list

包含一个或多个元素的编码字符串。可以使用 SQL $LISTBUILD 函数或 ObjectScript $LISTBUILD 函数创建列表。可以使用 SQL $LISTFROMSTRING 函数或 ObjectScript $LISTFROMSTRING 函数将分隔字符串转换为列表。可以使用 SQL $LIST 函数或 ObjectScript $LIST 函数从现有列表中提取列表。

position

0
0 103
文章 姚 鑫 · 三月 14, 2022 5m read

第八十一章 SQL函数 $LISTBUILD

从字符串构建列表的列表函数。

大纲

$LISTBUILD(element [,...])

参数

  • element - 任何表达式,或逗号分隔的表达式列表

描述

$LISTBUILD 接受一个或多个表达式,并为每个表达式返回一个包含一个元素的列表。

以下函数可用于创建列表:

  • $LISTBUILD,它从多个字符串创建一个列表,每个元素一个字符串。
  • $LISTFROMSTRING,它从包含多个分隔元素的单个字符串创建一个列表。
  • $LIST,从现有列表中提取子列表。

$LISTBUILD 与其他 SQL 列表函数一起使用:$LIST$LISTDATA$LISTFIND$LISTFROMSTRING$LISTGET$LISTLENGTH$LISTTOSTRING

注意:$LISTBUILD 和其他 $LIST 函数使用优化的二进制表示来存储数据元素。出于这个原因,等效性测试可能无法对某些 $LIST 数据按预期工作。在其他情况下可能被视为等效的数据可能具有不同的内部表示。例如,$LISTBUILD(1) 不等于 $LISTBUILD('1')

0
0 94
文章 姚 鑫 · 三月 13, 2022 5m read

第八十章 SQL函数 $LIST(二)

示例

在以下嵌入式 SQL 示例中,两个 WRITE 语句都返回“Red”,即列表中的第一个元素。第一个默认写入第一个元素,第二个写入第一个元素,因为位置参数设置为 1

/// d ##class(PHA.TEST.SQLFunction).Li4()
ClassMethod Li4()
{
	s a = $lb("Red", "Blue", "Green")
	&sql(SELECT $LIST(:a), $LIST(:a,1)
		INTO :b,:c )
	if SQLCODE '= 0 {
		w !,"Error code ",SQLCODE 
	} else {
		w !,"The one-arg sublist is ",b
		w !,"The two-arg sublist is ",c }
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).Li4()
 
The one-arg sublist is Red
The two-arg sublist is Red

以下嵌入式 SQL 示例返回列表中的第二个元素“Blue”

0
0 158
文章 姚 鑫 · 三月 12, 2022 4m read

第七十九章 SQL函数 $LIST(一)

返回列表中元素的列表函数。

大纲

$LIST(list[,position[,end]])

参数

  • list - 计算结果为有效列表的表达式。列表是包含一个或多个元素的编码字符串。可以使用 SQL 或 ObjectScript 的 $LISTBUILD$LISTFROMSTRING 函数创建列表。可以使用 SQL 或 ObjectScript $LIST 函数从现有列表中提取列表。
  • position - 可选 - 指定列表中的起始位置。计算结果为整数的表达式。
  • end - 可选 - 指定列表中的结束位置。计算结果为整数的表达式。

描述

$LIST 从列表中返回元素。返回的元素取决于使用的参数。

  • $LIST(list) 将列表中的第一个元素作为文本字符串返回。
  • $LIST(list,position) 将指定位置指示的元素作为文本字符串返回。位置参数必须计算为整数。
  • $LIST(list,position,end) 返回一个“子列表”(编码的列表字符串),其中包含从指定开始位置到指定结束位置的列表元素。

此函数返回 VARCHAR 类型的数据。

参数

list

0
0 359
文章 姚 鑫 · 三月 11, 2022 5m read

第七十八章 SQL函数 $LENGTH

返回字符串中字符数或分隔子字符串数的字符串函数。

大纲

$LENGTH(expression[,delimiter])

参数

  • expression - 目标字符串。它可以是数值、字符串文字、任何变量的名称或任何有效的表达式。
  • delimiter - 可选 — 在目标字符串中划分不同子字符串的字符串。它必须是字符串文字,但可以是任意长度。括起来的引号是必需的。

$LENGTH 返回 SMALLINT 数据类型。

描述

$LENGTH 返回指定字符串中的字符数或指定字符串中的子字符串数,具体取决于使用的参数。

  • $LENGTH(expression) 返回字符串中的字符数。如果表达式为空字符串 (''),则 $LENGTH 返回 0。如果表达式为 NULL,则 $LENGTH 返回 0
  • $LENGTH(expression,delimiter) 返回字符串中子字符串的数量。 $LENGTH 返回由指定分隔符相互分隔的子字符串的数量。此数字始终等于在表达式字符串中找到的分隔符实例的数量加一。

$LENGTH(expression) 和其他长度函数

$LENGTH(expression) 和其他长度函数(LENGTHCHARACTER_LENGTHCHAR_LENGTHDATALENGTH)都执行以下操作:

0
0 256
文章 姚 鑫 · 三月 10, 2022 4m read

第七十七章 SQL函数 LENGTH

返回字符串表达式中字符数的字符串函数。

大纲

LENGTH(string-expression)

{fn LENGTH(string-expression)}

参数

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

LENGTH 返回 INTEGER 数据类型。

描述

LENGTH 返回一个整数,表示给定字符串表达式的字符数,而不是字节数。字符串表达式可以是字符串(从中删除尾随空格)或数字( IRIS 将其转换为规范形式)。

请注意,LENGTH 可用作 ODBC 标量函数(使用花括号语法)或 SQL 通用函数。

LENGTH 和其他长度函数($LENGTHCHARACTER_LENGTHCHAR_LENGTHDATALENGTH)都执行以下操作:

0
0 108
文章 姚 鑫 · 三月 9, 2022 1m read

第七十六章 SQL函数 LEN

返回字符串表达式中字符数的字符串函数。

大纲

LEN(string-expression)

参数

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

LEN 返回 INTEGER 数据类型。

描述

注意:LEN 函数是 LENGTH 函数的别名。

SELECT len("yaoxin")  

6
0
0 112