0 关注者 · 478 帖子

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

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

第126章 SQL函数 SIN

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

大纲

{fn SIN(numeric-expression)}

参数

  • numeric-expression - 数值表达式。这是一个以弧度表示的角度。

SIN 返回 NUMERICDOUBLE 数据类型。如果 numeric-expression 是数据类型 DOUBLE,则 SIN 返回 DOUBLE;否则,它返回 NUMERIC

描述

SIN 接受任何数值并将其正弦作为浮点数返回。如果传递一个 NULL 值,SIN 返回 NULLSIN 将非数字字符串视为数值 0

SIN 返回一个精度为 19、小数位数为 18 的值。

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

可以使用 DEGREES 函数将弧度转换为度数。可以使用 RADIANS 函数将度数转换为弧度。

示例

以下示例显示了 SIN 的效果:

SELECT {fn SIN(0.52)} AS Sine

0.496880137843736714
0
0 59
文章 姚 鑫 · 四月 27, 2022 1m read

第125章 SQL函数 SIGN

返回给定数值表达式符号的数值函数。

大纲

SIGN(numeric-expression)

{fn SIGN(numeric-expression)}

参数

  • numeric-expression - 要为其返回符号的数字。

SIGN 返回 SMALLINT 数据类型。

描述

SIGN 返回以下内容:

  • -1 如果 numeric-expression 小于零。
  • 如果 numeric-expression 为零,则为 0(零):0+0-0
  • 如果 numeric-expression 大于零,则为 1
  • 如果 numeric-expressionNULL,或者它是非数字字符串,则为 NULL

SIGN 可用作 ODBC 标量函数(使用花括号语法)或 SQL 通用函数。

SIGN 在确定其值之前将数值表达式转换为规范形式。例如,SIGN(-+-+3)SIGN(-3+5) 都返回 1,表示一个正数。

注意:两个负号(连字符)是内嵌注释指示符。因此,指定两个连续负号的 SIGN 参数必须显示为用引号括起来的数字字符串。

示例

以下示例显示了 SIGN 的效果:

SELECT SIGN(-49) AS PosNeg

-1
SELECT {fn SIGN(-0.0)} AS PosNeg

0
SELECT SIGN(-+-16.748) AS PosNeg

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

第124章 SQL函数 SECOND

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

大纲

{fn SECOND(time-expression)}

参数

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

描述

SECOND 返回一个从 059 的整数,也可能返回小数秒。秒数是针对 $HOROLOG$ZTIMESTAMP 值、ODBC 格式日期字符串(没有时间值)或时间戳计算的。

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

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

必须提供时间戳字符串 (yyyy-mm-dd hh:mm:ss) 或 $HOROLOG 字符串。 $HOROLOG 字符串可以是完整的日期时间字符串 (63274,37279) 或只是 $HOROLOG (37279) 的时间整数部分。不能提供时间字符串 (hh:mm:ss);无论实际秒数如何,这始终返回 0

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

第123章 SQL函数 SEARCH_INDEX

从索引的 Find() 方法返回一组值的函数。

大纲

SEARCH_INDEX([[schema_name.]table-name.]index-name[,findparam[,...])

参数

  • table-name - 可选 — 为其定义了 index-name 的现有表的名称。不能是一个视图。表的 schema_name 是可选的。如果省略,则搜索 FROM 子句中指定的所有表。
  • index-name - 要搜索的索引。现有索引的索引映射的 SqlName
  • findparam - 可选 — 要传递给索引的 Find() 方法的参数或逗号分隔的参数列表。

描述

SEARCH_INDEX 调用 index-nameFind() 方法并返回一组值。可以选择将参数传递给此 Find() 方法。例如,SEARCH_INDEX(Sample.Person.NameIDX) 调用 Sample.Person.NameIDXFind() 方法。

SEARCH_INDEX 可以与 WHERE 子句中的 %FIND 谓词一起使用,以提供对象的 oref,该对象提供封装一组值的抽象表示。这些值通常是查询运行时调用的方法返回的行 IDSEARCH_INDEX 调用索引的 Find() 方法来返回这个 oref。此用法显示在以下示例中:

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

第122章 SQL函数 RTRIM

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

大纲

RTRIM(string-expression)

{fn RTRIM(string-expression)}

参数

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

描述

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

无论要裁剪的输入表达式的数据类型是什么,RTRIM总是返回数据类型VARCHAR

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

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

示例

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

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

第121章 SQL函数 RPAD

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

大纲

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

参数

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

描述

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

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

0
0 129
文章 姚 鑫 · 四月 22, 2022 5m read

第120章 SQL函数 ROUND

以指定位数舍入或截断数字的数值函数。

大纲

ROUND(numeric-expr,scale[,flag])

{fn ROUND(numeric-expr,scale[,flag])}

参数

  • numeric-expr - 要四舍五入的数字。一个数值表达式。
  • scale - 计算结果为整数的表达式,该整数指定要舍入到的位数,从小数点开始计数。可以是零、正整数或负整数。如果 scale 是小数, 会将其四舍五入为最接近的整数。
  • flag - 可选 — 一个布尔标志,指定是舍入还是截断 numeric-expr:0=round, 1=truncate。默认值为 0

ROUND 返回与 numeric-expr 相同的数据类型。

描述

此函数可用于将数字舍入或截断为指定的小数位数。

ROUNDnumeric-expr 舍入或截断以缩放位置,从小数点开始计数。舍入时,数字 5 始终向上舍入。在 ROUND 循环或截断操作后删除尾随零。不返回前导零。

0
0 221
文章 Jiakeng Lei · 四月 22, 2022 1m read

问题: 通过JDBC连接Oracle19C数据报错 "ORA-28040: No matching authentication protocal"

解决 : 1、在数据库服务器上找到sqlnet.ora文件,一般在oracle安装目录app/oracle/product/19.0.0.0/db_1/network/admin/sqlnet.ora

2、如果有进行修改,没有直接创建

3、slqnet.ora文件新增或修改以下 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

4、注意事项: ① 如果没有sqlnet.ora文件可以直接创建 vi sqlnet.ora ② 如果有不能直接vi 需要使sed -a 命令追加,否则会导致ora文件乱码 ③ 添加参数后新无需重启数据库或者监听,但是需要修改用户密码,否则会报错

5、修改用户名密码

sqlplus / as sysdba

alter user 用户名 identified by 新密码;

2
0 287
文章 姚 鑫 · 四月 21, 2022 1m read

第119章 SQL函数 RIGHT

标量字符串函数,它从字符串表达式的末尾(最右边的位置)返回指定数量的字符。

大纲

{fn RIGHT(string-expression,count)}

参数

  • string-expression - 字符串表达式,可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR)。
  • count - 整数,指定从 string-expression 的结束(最右边)位置返回的字符数。

描述

RIGHT 从字符串表达式的末尾(最右边的位置)返回 count 个字符。如果为任一参数传递 NULL 值,RIGHT 将返回 NULL

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

示例

以下示例返回 Sample.Person 表中每个名称最右边的两个字符:

SELECT Name,{fn RIGHT(Name,2)}AS MiddleInitial
     FROM Sample.Person

以下嵌入式 SQL 示例显示 RIGHT 如何处理比字符串本身长的计数:

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

第118章 SQL函数 REVERSE

标量字符串函数,它以相反的字符顺序返回一个字符串。

大纲

REVERSE(string-expression)

参数

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

描述

REVERSE 返回字符顺序颠倒的字符串表达式。例如 'Hello World!' 返回为 '!dlroW olleH'。这是一个简单的字符串顺序反转,没有额外的处理。

返回的字符串是数据类型 VARCHAR,与输入值的数据类型无关。数字转换为规范形式,数字字符串在反转之前不会转换为规范形式。

前导和尾随空白不受反转的影响。

反转 NULL 值会导致 NULL

注意:因为 REVERSE 总是返回一个 VARCHAR 字符串,所以某些类型的数据在反转时会变得无效:

  • 反向列表不再是有效列表,无法从存储格式转换为显示格式。
  • 反转日期不再是有效日期,并且无法从存储格式转换为显示格式。

示例

以下示例反转 Name 字段值。在这种情况下,这会导致名称按中间名首字母排序:

SELECT Name,REVERSE(Name) AS RevName
FROM Sample.Person
ORDER BY RevName
0
0 94
文章 姚 鑫 · 四月 19, 2022 1m read

第117章 SQL函数 REPLICATE

将字符串重复指定次数的字符串函数。

大纲

REPLICATE(expression,repeat-count)

参数

  • expression - 要重复的字符串表达式。
  • repeat-count - 重复的次数,以整数表示。

描述

注意:REPLICATE 函数是 REPEAT 函数的别名。提供 REPLICATE 是为了与 TSQL 兼容。有关详细信息,请参阅重复。

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

第116章 SQL函数 REPLACE

字符串函数,用于替换字符串中的子字符串。

大纲

REPLACE(string,oldsubstring,newsubstring)

参数

  • string - 作为子字符串搜索目标的字符串表达式。
  • oldsubstring - 字符串中要匹配的子字符串。
  • newsubstring - 用于替换 oldsubstring 的子字符串。

描述

REPLACE 在字符串中搜索子字符串并替换所有匹配项。匹配区分大小写。如果找到匹配项,它将用 newsubstring 替换 oldsubstring 的每个实例。替换子串可能比它替换的子串长或短。如果找不到子字符串,则 REPLACE 将原样返回原字符串。

无论字符串的数据类型如何,REPLACE 返回的值始终是数据类型 VARCHAR。这允许替换操作,例如 REPLACE(12.3,'.','_')

REPLACE 不能对字符串、oldsubstringnewsubstring 参数使用 %Stream.GlobalCharacter 字段。尝试这样做会生成 SQLCODE -37 错误。

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

0
0 131
文章 姚 鑫 · 四月 17, 2022 1m read

第115章 SQL函数 REPEAT

将字符串重复指定次数的字符串函数。

大纲

REPEAT(expression,repeat-count)

{fn REPEAT(expression,repeat-count)}

参数

  • expression - 要重复的字符串表达式。
  • repeat-count - 重复的次数,以整数表示。

描述

REPEAT 返回一串重复计数的表达式实例,连接在一起。

如果表达式为 NULL,则 REPEAT 返回 NULL。如果 expression 是空字符串,则 REPEAT 返回一个空字符串。

如果重复计数是小数,则仅使用整数部分。如果重复计数为 0,则 REPEAT 返回一个空字符串。如果重复计数是负数、NULL 或非数字字符串,则 REPEAT 返回 NULL

示例

以下示例显示了 REPEAT 的两种形式。两个示例都返回字符串“BANGBANGBANG”

SELECT REPEAT('BANG',3) AS Tripled

BANGBANGBANG
SELECT {fn REPEAT('BANG',3)} AS Tripled

BANGBANGBANG
0
0 112
文章 姚 鑫 · 四月 16, 2022 2m read

第114章 SQL函数 RADIANS

将度数转换为弧度的数值函数。

大纲

RADIANS(numeric-expression)

{fn RADIANS(numeric-expression)}

参数

  • numeric-expression - 以度为单位的角度度量。解析为数值的表达式。

RADIANS 返回 NUMERICDOUBLE 数据类型。如果 numeric-expression 是数据类型 DOUBLERADIANS 返回 DOUBLE;否则,它返回 NUMERIC

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

描述

RADIANS 以度为单位进行角度测量,并以弧度返回相应的角度测量。如果传递 NULL 值,RADIANS 将返回 NULL

返回值的默认精度为 36,默认小数位数为 18

可以使用 DEGREES 函数将弧度转换为度数。

示例

以下嵌入式 SQL 示例以 30 度为增量返回与从 0365 的度值对应的弧度等效值:

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

第113章 SQL函数 QUARTER

日期函数,它将一年中的季度作为日期表达式的整数返回。

大纲

{fn QUARTER(date-expression)}

参数

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

描述

QUARTER 返回一个从 14 的整数。季度是针对 日期整数、$HOROLOG 或 $ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳计算的。

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

四个季度的时间段如下:

QuarterPeriod (inclusive)
1January 1 to March 31 (90 or 91 days)
2April 1 to June 30 (91 days)
3July 1 to September 30 (92 days)
4October 1 to December 31 (92 days)
0
0 107
文章 姚 鑫 · 四月 13, 2022 1m read

第111章 SQL函数 PREDICT

IntegratedML 函数,它应用指定的训练模型来预测提供的每个输入行的结果。

大纲

PREDICT(model-name )

PREDICT(model-name USE trained-model-name )

PREDICT(model-name WITH feature-columns-clause )

PREDICT(model-name USE trained-model-name WITH feature-columns-clause )

描述

PREDICT 是一个 IntegratedML 函数,可用作 SELECT 选择项以返回将经过训练的机器学习模型应用于指定查询的结果。

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

第110章 SQL函数 POWER

一个数值函数,它返回给定表达式的指定幂的值。

大纲

POWER(numeric-expression,power)

{fn POWER(numeric-expression,power)}

参数

  • numeric-expression - 基数。可以是正整数或负整数或小数。
  • power - 指数,它是数值表达式的幂。可以是正整数或负整数或小数。

POWER 返回 NUMERICDOUBLE 数据类型。如果 numeric-expression 是数据类型 DOUBLE,则 POWER 返回 DOUBLE;否则,它返回 NUMERIC

描述

POWER 计算一个数字的另一个幂。它返回一个精度为 36、比例为 18 的值。

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

numeric-expressionpower 的所有组合都是有效的,除了:

  • POWER(0,-m)0 数字表达式和负幂会导致 SQLCODE -400 错误。
  • POWER(-n,.m):负数值表达式和小数幂会导致 SQLCODE -400 错误。

示例

以下示例将 5 提高到 3 次方:

SELECT POWER(5,3) AS Cubed

125

以下嵌入式 SQL 示例返回 2 的前 16 次幂:

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

第109章 SQL函数 POSITION

返回子字符串在字符串中的位置的字符串函数。

大纲

POSITION(substring IN string)

参数

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

POSITION返回INTEGER数据类型。

描述

POSITION返回字符串中子字符串的第一个位置。 位置以整数形式返回。 如果substring没有找到,则返回0(0)。 如果传递给任何一个参数一个NULL值,POSITION将返回NULL

位置是区分大小写的。 使用其中一个大小写转换函数来定位字母或字符串的大写和小写实例。

POSITION, INSTR, CHARINDEX和$FIND

POSITIONINSTRCHARINDEX$FIND都将搜索字符串中指定的子字符串,并返回与第一个匹配项对应的整数位置。 CHARINDEXPOSITIONINSTR返回匹配子字符串的第一个字符的整数位置。 $FIND返回匹配子字符串结束后第一个字符的整数位置。 CHARINDEX$FINDINSTR支持指定子字符串搜索的起始点。 INSTR还支持从起始点指定子字符串出现。

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

[toc]

第108章 SQL函数 %PLUS

将数字转换为规范排序格式的排序函数。

大纲

%PLUS(expression)

%PLUS expression

参数

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

描述

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

数字可以包含前导和后导零、多个前导加减号、单个小数点指示符(.)和E指数指示符。 在标准形式中,将执行所有算术运算,展开指数,将符号解析为一个前导减号或无符号,并剥离前导和后导零。

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

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

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

  WRITE $SYSTEM.Util.Collation("++007.500",3)

%PLUS%MVR 排序规则进行比较,后者根据字符串中的数字子字符串对字符串进行排序。

示例

0
0 89
问题 Michael Lei · 四月 7, 2022

你好!

我想知道,如果在没有运行%BuildIndices()方法的情况下向表中插入索引,是否会有问题。

需要注意的是,在索引之前插入的数据对于检索来说并不重要,所以在索引之前插入的数据在查询中不显示并不是问题。

我问这个问题的原因是,我想避免在需要插入这种索引的大表中进行索引重建。

我正在使用Cache 2018.1。

谢谢。

José

Hi!

I'd like to know if there are any issues if an index is inserted into a table without running the %BuildIndices() method.

It's important to note that data inserted before the index is not important for retrieval, so it's not a problem data inserted before the index don't show up in queries.

The reason why I'm asking this is that I'd like to avoid index reconstruction on big tables which I need to inser such index.

2
0 205
文章 姚 鑫 · 四月 9, 2022 7m read

第107章 SQL函数 $PIECE

返回由分隔符标识的子字符串的字符串函数。

大纲

$PIECE(string-expression,delimiter[,from[,to]])

参数

  • string-expression - 要从中提取子字符串的目标字符串。 表达式,可以是字段名、字符串字面值、数字或其他函数的结果。
  • delimiter - 用于标识子字符串的分隔符。
  • from - 可选-指定要从目标字符串返回的子字符串或子字符串范围的开头的整数。 子字符串由分隔符分隔,从1开始计数。 如果省略,则返回第一个子字符串。
  • to - 可选-一个整数,指定从目标字符串返回的子字符串范围的结束子字符串。 必须与from连用。

描述

$PIECE从字符串表达式中返回指定的子字符串(PIECE)。 返回的子字符串取决于所使用的参数:

0
0 144
文章 姚 鑫 · 四月 8, 2022 1m read

第106章 SQL函数 PI

返回pi常数值的标量数值函数。

大纲

{fn PI()}
{fn PI}

描述

PI不接受参数。 它返回数学常数pi作为数据类型NUMERIC,精度为19,刻度为18

PI只能使用ODBC标量函数(花括号)语法调用。 请注意,参数括号是可选的。

描述

下面的例子都返回pi的值:

SELECT {fn PI()} AS ExactPi

3.141592653589793238
SELECT {fn PI} AS ExactPi

3.141592653589793238
0
0 82
文章 姚 鑫 · 四月 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 67
文章 姚 鑫 · 四月 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 74
文章 姚 鑫 · 四月 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 66
文章 姚 鑫 · 四月 4, 2022 2m read

第102章 SQL函数 %OBJECT

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

大纲

%OBJECT(stream)

参数

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

描述

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

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

0
0 108
文章 姚 鑫 · 四月 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 90
文章 姚 鑫 · 四月 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 69
文章 姚 鑫 · 四月 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 77