文章
姚 鑫 · 十二月 13, 2021 阅读大约需 1 分钟
第十四章 SQL谓词 IS NULL

第十四章 SQL谓词 IS NULL

确定一个数据值是否为NULL

大纲

scalar-expression IS [NOT] NULL

描述

IS NULL谓词检测未定义的值。
可以检测到所有空值,或所有非空值:

SELECT Name, FavoriteColors FROM Sample.Person
WHERE FavoriteColors IS NULL 
SELECT Name, FavoriteColors FROM Sample.Person
WHERE FavoriteColors IS NOT NULL

IS NULL / IS NOT NULL谓词是少数几个可以在WHERE子句中用于流字段的谓词之一。
如下面的例子所示:

0 0
0 16
文章
姚 鑫 · 一月 18 阅读大约需 3 分钟
第二十七章 SQL函数 CHARINDEX

第二十七章 SQL函数 CHARINDEX

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

大纲

CHARINDEX(substring,string[,start])

参数

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

CHARINDEX返回INTEGER数据类型。

0 0
0 38
文章
姚 鑫 · 三月 4 阅读大约需 2 分钟
第七十一章 SQL函数 LAST_DAY

第七十一章 SQL函数 LAST_DAY

日期函数,它为日期表达式返回一个月的最后一天的日期。

大纲

LAST_DAY(date-expression)

参数

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

描述

LAST_DAY以整数形式返回指定月份的最后一天,格式为$HOROLOG
计算闰年差异,包括世纪日调整:2000是闰年,19002100不是闰年。

日期表达式可以是一个日期整数、一个$HOROLOG$ZTIMESTAMP值、一个ODBC格式的日期字符串或一个时间戳。

0 0
0 19
文章
姚 鑫 · 三月 20 阅读大约需 4 分钟
第八十七章 SQL函数 $LISTSAME

第八十七章 SQL函数 $LISTSAME

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

大纲

$LISTSAME(list1,list2)

参数

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

描述

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

0 0
0 15
文章
姚 鑫 · 四月 5 阅读大约需 1 分钟
第103章 SQL函数 %ODBCIN

第103章 SQL函数 %ODBCIN

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

大纲

%ODBCIN(expression)

%ODBCIN expression

参数

  • expression - 要转换的表达式。

描述

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

%ODBCIN 是一个 SQL 扩展。

示例

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

0 0
0 16
文章
姚 鑫 · 四月 20 阅读大约需 2 分钟
第118章 SQL函数 REVERSE

第118章 SQL函数 REVERSE

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

大纲

REVERSE(string-expression)

参数

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

描述

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

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

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

反转 NULL 值会导致 NULL

0 0
0 15
文章
姚 鑫 · 五月 2 阅读大约需 2 分钟
第130章 SQL函数 SQRT

第130章 SQL函数 SQRT

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

大纲

SQRT(numeric-expression)

{fn SQRT(numeric-expression)}

参数

  • numeric-expression - 解析为计算平方根的正数的表达式。

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

0 0
0 19
文章
姚 鑫 · 五月 17 阅读大约需 4 分钟
第145章 SQL函数 TO_NUMBER

第145章 SQL函数 TO_NUMBER

将字符串表达式转换为 NUMERIC 数据类型的值的字符串函数。

大纲

TO_NUMBER(string-expression)

TONUMBER(string-expression)

参数

  • string-expression - 要转换的字符串表达式。表达式可以是列名、字符串文字或另一个函数的结果,其中基础数据类型为 CHARVARCHAR2 类型。

描述

名称 TO_NUMBERTONUMBER 可以互换。它们支持 Oracle 兼容性。

0 0
0 14
文章
姚 鑫 · 六月 3 阅读大约需 2 分钟
第161章 SQL函数 YEAR

第161章 SQL函数 YEAR

返回日期表达式的年份的日期函数。

大纲

YEAR(date-expression)

{fn YEAR(date-expression)}

参数

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

描述

YEAR 将日期整数($HOROLOG 日期)、ODBC 格式日期字符串或时间戳作为输入。 YEAR 以整数形式返回相应的年份。

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

0 0
0 17
文章
姚 鑫 · 六月 22 阅读大约需 4 分钟
第七章 操作位和位串(三)

第七章 操作位和位串(三)

操作位串

要创建新的位串,请使用 $bit 函数将所需位设置为 1

kill bitstring

set $bit(bitstring, 3) = 1

set $bit(bitstring, 6) = 1

set $bit(bitstring, 11) = 1

使用 $bit 将现有位串中的位设置为 1

set $bit(bitstring, 5) = 1

使用 $bit 将现有位串中的位设置为 0

set $bit(bitstring, 5) = 0

由于位串中的第一位是位 1,因此尝试设置位 0 会返回错误:

0 0
0 10
文章
姚 鑫 · 七月 8 阅读大约需 2 分钟
第二十二章 安全自定义 Web 应用程序登录

第二十二章 安全自定义 Web 应用程序登录

除了推荐的 REST 应用程序支持之外,产品还支持两种类型的传统 Web 应用程序:CSPZen。在配置使用 CSPZen 的自定义登录页面时,遵循推荐的协议很重要。这些协议提供了更高的安全性,并最大限度地减少了升级到新产品或版本时的不兼容性。

关于创建自定义 CSP 登录页面

创建自定义 CSP 登录页面:

0 0
0 20
文章
Hao Ma · 一月 10, 2021 阅读大约需 15 分钟
InterSystems 最佳实践系列---APM – 监控 SQL 查询性能

自 Caché 2017 以后,SQL 引擎包含了一些新的统计信息。 这些统计信息记录了执行查询的次数以及运行查询所花费的时间。

对于想要对包含许多 SQL 语句的应用程序的性能进行监控和尝试优化的人来说,这是一座宝库,但访问数据并不像一些人希望的那么容易。

0 0
0 190
文章
姚 鑫 · 三月 13, 2021 阅读大约需 9 分钟
第九章 SQL查询数据库(二)

第九章 SQL查询数据库(二)

调用用户定义函数的查询

InterSystems SQL允许您在SQL查询中调用类方法。这为扩展SQL语法提供了强大的机制。

若要创建用户定义的函数,请在持久性InterSystems IRIS类中定义一个类方法。该方法必须具有文字(非对象)返回值。这必须是一个类方法,因为在SQL查询中将没有对象实例可以在其上调用实例方法。还必须将其定义为SQL存储过程。

例如,我们可以在MyApp.Person类中定义一个Cube()方法:

0 0
0 111
文章
姚 鑫 · 三月 30, 2021 阅读大约需 9 分钟
第十四章 使用SQL Shell界面(一)

第十四章 使用SQL Shell界面(一)

执行SQL的其他方式

可以使用$SYSTEM.SQL.Execute() 方法从Terminal命令行执行一行SQL代码,而无需调用SQL Shell。以下示例显示如何在终端提示下使用此方法:

DHC-APP>SET result=$SYSTEM.SQL.Execute("SELECT TOP 5 name,dob,ssn FROM Sample.Person")

DHC-APP>DO result.%Display()
Name    DOB     SSN
yaoxin  54536   111-11-1117
xiaoli          111-11-1111
姚鑫    63189   111-11-1112
姚鑫    63189   111-11-1113
姚鑫    50066   111-11-1114

5 Rows(s) Affected

如果SQL语句包含错误,则Execute()方法成功完成;否则,该方法无效。 %Display()方法返回错误信息,例如:

0 0
0 405
文章
姚 鑫 · 四月 17, 2021 阅读大约需 6 分钟
第二章 定义和构建索引(五)

第二章 定义和构建索引(五)

验证索引

可以使用以下任一方法验证索引
- $SYSTEM.OBJ.ValidateIndices()验证表的索引,还验证该表的集合子表中的任何索引。
- %Library.Storage.%ValidateIndices()验证表的索引。集合子表索引必须使用单独的%ValidateIndices()调用进行验证。

这两种方法都会检查指定表的一个或多个索引的数据完整性,并可以选择更正发现的任何索引完整性问题。他们分两步执行索引验证:
1. 确认为表(类)中的每一行(对象)正确定义了索引实体。
2. 遍历每个索引,对于索引的每个条目,确保表(类)中有一个值和匹配的条目。

如果这两种方法中的任何一种发现不一致,它都可以有选择地更正索引结构和/或内容。它可以验证标准索引、位图索引、位图范围索引和位片索引,并可选择对其进行校正。默认情况下,这两种方法都会验证索引,但不会更正索引。

0 0
0 39
文章
姚 鑫 · 四月 29, 2021 阅读大约需 10 分钟
第九章 冻结计划

第九章 冻结计划

大多数SQL语句都有一个关联的查询计划。查询计划是在准备SQL语句时创建的。默认情况下,添加索引和重新编译类等操作会清除此查询计划。下次调用查询时,将重新准备查询并创建新的查询计划。冻结计划使可以跨编译保留(冻结)现有查询计划。查询执行使用冻结的计划,而不是执行新的优化并生成新的查询计划。

对系统软件的更改也可能导致不同的查询计划。通常,这些升级会带来更好的查询性能,但软件升级可能会降低特定查询的性能。冻结计划使可以保留(冻结)查询计划,以便查询性能不会因系统软件升级而改变(降级或提高)。

0 0
0 36
文章
姚 鑫 · 五月 13, 2021 阅读大约需 4 分钟
第五章 管理全局变量(二)

第五章 管理全局变量(二)

在全局变量中查找值

“查找全局变量字符串”页使可以在下标或选定全局变量的值中查找给定的字符串。

要访问和使用此页,请执行以下操作:

  1. 显示“全局变量”页。
  2. 选择要使用的全局变量。为此,请参阅“全局页简介”一节中的步骤2和3。
  3. 单击查找按钮。
  4. 对于查找内容,输入要搜索的字符串。
  5. (可选)清除大小写匹配。默认情况下,搜索区分大小写。
  6. 单击Find First或Find All。

然后,页面显示选定全局变量中下标或值包含给定字符串的第一个节点或所有节点。该表左侧显示了节点下标,右侧显示了相应的值。

  1. 如果使用的是Find First,请根据需要单击Find Next以查看下一个节点。
  2. 完成后,单击关闭窗口。

执行批量更换

注意:在进行任何编辑之前,请确保知道IRIS使用哪个全局系统,以及应用程序使用哪个全局系统;参见“一般建议”此选项会永久更改数据。不建议在生产系统中使用。

0 0
0 36
文章
姚 鑫 · 五月 28, 2021 阅读大约需 4 分钟
第九章 创建、编写和阅读MIME邮件

第九章 创建、编写和阅读MIME邮件

Iris提供了一个可以用于创建MultiPart Mime消息(%Net.MimePart)的类。创建要添加到SOAP消息的附件时,请使用此类;请参阅创建Web服务和Web客户端。因为MIME是一个常见的标准,所以有许多其他可能的应用程序,例如电子邮件处理和HTTP Multipart Post。

# MIME消息概述

MIME格式的文档被称为MIME部分。每个MIME部件都有标题,包含邮件正文(文本或二进制)或包含额外的MIME部件。具有MIME版本标题的MIME部分可以用作顶级文档,称为MIME消息。下图显示了示例:

image

在该示例中,EF具有未显示的附加子部分。

要表示MIME部件,请使用 %Net.MIMEPart类,该类提供用于设置零件的标题和内容的属性。

# 创建MIME部分

0 0
0 38
文章
姚 鑫 · 九月 11, 2021 阅读大约需 3 分钟
第十三章 SQL命令 CREATE ROLE

第十三章 SQL命令 CREATE ROLE

创建角色

大纲

CREATE ROLE role-name

参数

  • role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。

描述

CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。

0 0
0 24
文章
姚 鑫 · 九月 28, 2021 阅读大约需 4 分钟
第二十八章 SQL命令 DELETE(二)

第二十八章 SQL命令 DELETE(二)

示例

以下两个示例都删除了TempEmployees表中的所有行。请注意,FROM关键字是可选的:

DELETE FROM TempEmployees
DELETE TempEmployees

以下示例从Employees表中删除员工编号234

DELETE
     FROM Employees
     WHERE EmpId = 234

下面的示例从ActiveEmployees表中删除CurStatus列设置为“RETIRED”的所有行:

0 0
0 23
文章
姚 鑫 · 十一月 28, 2021 阅读大约需 2 分钟
第九十章 SQL命令 WHERE CURRENT OF

第九十章 SQL命令 WHERE CURRENT OF

使用游标指定当前行的UPDATE/DELETE子句。

大纲

WHERE CURRENT OF cursor

参数

  • cursor - 指定在光标的当前位置执行操作,光标是指向表的光标。

描述

WHERE CURRENT OF子句可用于基于游标的嵌入式SQL UPDATEDELETE语句,以指定位于要更新或删除记录上的游标。
例如:

   &sql(DELETE FROM Sample.Employees WHERE CURRENT OF EmployeeCursor)

删除最后一个FETCH命令从“EmployeeCursor”游标获得的行。

0 0
0 20
文章
姚 鑫 · 一月 19 阅读大约需 3 分钟
第二十八章 SQL函数 CHAR_LENGTH

第二十八章 SQL函数 CHAR_LENGTH

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

大纲

CHAR_LENGTH(expression)

参数

  • expression - 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHARVARCHAR)、数字或数据流。

CHAR_LENGTH返回整数数据类型。

描述

CHAR_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0。

0 0
0 19