文章 Lilian Huang · 三月 15, 2022 3m read

这篇文章的目的是为了说明如何使用互操作菜单实现系统集成。


 

图片左侧窗口是接受外部系统发送信息的窗口。

信息接收方式种类很多,如定时监控指定目录来读取文件,定期查询数据库,输入且等待信息输出,或直接调用其他应用程序系统传送信息。

在系统集成配置中创建IRIS 互操作性菜单,接收到存储在一个对象中的信息被称为一条消息message以下统称为消息)。消息被发送到组件component 以下统称为组件)中做后续处理。

使用所有接收到的信息或仅使用其中的一部分就能用来创建消息。

假设您要将信息中包含的消息发送给外部系统。这种情况下,需要将该消息发送给负责请求外网处理的组件(图右侧)。接收到消息的组件会请求外部系统对其进行处理。

此外,假设一条消息需要人工审查、数据转换或数据附加。这种情况下,消息会被发送到图表中间的业务流程管理组件(BPM),该组件负责协调处理流程。

消息用于在每个组件之间发送和接收数据。当发送或接收消息时,消息会被自动存储在数据库中。

由于消息存储在数据库中,因此在数据转换前后可以检查其差异性。在操作期间,或过程中间重新开始(重新发送),可以检查作为问题根源的消息。在开发、测试和操作的每个阶段可以验证正在使用的消息状态。

一个简单的系统集成图将分为三个部分(业务服务、业务流程和业务操作),如下图所示。

0
0 519
文章 姚 鑫 · 三月 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')

出于同样的原因,$LISTBUILD 返回的列表字符串值不应用于使用分隔符的字符搜索和解析函数,例如 $PIECE$LENGTH

0
0 96
文章 姚 鑫 · 三月 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”

/// d ##class(PHA.TEST.SQLFunction).
0
0 160
文章 姚 鑫 · 三月 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

包含一个或多个元素的编码字符串。可以使用 SQL $LISTBUILD 函数或 ObjectScript $LISTBUILD 函数创建列表。

0
0 364
文章 Michael Lei · 三月 12, 2022 5m read

在Linux上设置TZ环境变量

v2015.1的更新检查表建议在Linux平台上设置TZ环境变量,并指出了tzset的手册。建议这样做是为了提高Caché的时间相关功能的性能。你可以在下文找到更多关于这个的信息:

Linux TZ环境变量未被设置以及对Caché的影响

我的CentOS 7测试系统上的manpage(RHEL 6也是这样说的)有这样的说法。

"tzset()函数从TZ环境变量初始化tzname变量。   这个函数会被其他依赖时区的时间转换函数自动调用"。

那么,你如何设置TZ?它是如何影响Linux服务器上的时间的?让我们来看看我们能学到什么:

0
0 1214
文章 Michael Lei · 三月 12, 2022 1m read

在最近的大规模基准测试活动中,我们看到过多的%sys CPU时间,对应用程序的扩展产生了负面影响。

问题

我们发现,由于TZ环境变量没有被设置,很多时间都花在了localtime()系统调用上。 我们创建了一个简单的测试程序来证实这一观察结果,设置了TZ与未设置TZ的时间差和所需的CPU资源都是惊人的。 我们发现,当TZ没有设置时,从localtime()继承使用stat()系统调用到/etc/local_time是成本很高。

0
0 196
文章 姚 鑫 · 三月 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 返回由指定分隔符相互分隔的子字符串的数量。此数字始终等于在表达式字符串中找到的分隔符实例的数量加一。
0
0 258
文章 姚 鑫 · 三月 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)都执行以下操作:

  • LENGTH 返回字段的逻辑(内部数据存储)值的长度,而不是显示值,无论 SelectMode 设置如何。所有 SQL 函数始终使用字段的内部存储值。
  • LENGTH 返回数字的规范形式的长度。规范形式的数字不包括前导零和尾随零、前导符号(单个减号除外)和尾随小数分隔符。 LENGTH 返回数字字符串的字符串长度。数字字符串不会转换为规范形式。
0
0 114
文章 Qiao Peng · 三月 10, 2022 8m read

3.1 InterSystems IRIS内码与多语言支持

3.1.1 InterSystems IRIS内码与字符集转换

InterSystems IRIS的内码是UTF-16,因此它支持Unicode多语言字符集。对于其它字符编码,例如UTF-8、GB18030、Big 5,它会自动进行转码。例如对于简体中文,它将GB18030输入数据转换为UTF-16,或者将UTF-16数据转换为GB18030输出。

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

第七十六章 SQL函数 LEN

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

大纲

LEN(string-expression)

参数

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

LEN 返回 INTEGER 数据类型。

描述

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

SELECT len("yaoxin")  

6
0
0 119
文章 姚 鑫 · 三月 8, 2022 2m read

第七十五章 SQL函数 LEFT

标量字符串函数,返回从字符串表达式的开始(最左位置)开始的指定数量的字符。

大纲

{fn LEFT(string-expression,count)}

参数

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

描述

LEFT返回从字符串开始的指定字符数。 LEFT不填充字符串; 如果指定的字符数大于字符串中的字符数,则LEFT返回该字符串。 如果传递给任何一个参数一个NULL值,左返回NULL

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

示例

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

SELECT Name,{fn LEFT(Name,7)}AS ShortName
     FROM Sample.Person

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

/// d ##class(PHA.TEST.SQLCommand).
0
0 110
问题 Michael Lei · 三月 8, 2022

万能的社区我在cache中创建一个视图时遇到了麻烦,其查询方式为:

SELECT column1, column2, column 3
    FROM  table
    WHERE
        (column1, columnn 2) IN (SELECT c1, c2 FROM table2 GROUP BY c1)
    ORDER BY column1

我认为问题出在where子句上,因为它不能取两列: .

具体错误信息为: [SQLCODE: <-1>:<Invalid SQL statement>] [%msg: < ) expected, , found^ (column1,>]

请问如何解决? 谢谢!

1
0 259
文章 姚 鑫 · 三月 7, 2022 3m read

第七十四章 SQL函数 LEAST

从一系列表达式中返回最小值的函数。

大纲

LEAST(expression,expression[,...])

参数

  • expression - 解析为数字或字符串的表达式。 将这些表达式的值相互比较,并返回最小值。 表达式可以是字段名、文字、算术表达式、主机变量或对象引用。 最多可以列出140个逗号分隔的表达式。

描述

LEAST从逗号分隔的表达式序列中返回最小值。 表达式按从左到右的顺序求值。 如果只提供一个表达式,则LEAST返回该值。 如果任何表达式为NULL, LEAST返回NULL

如果所有表达式值都解析为规范数,则按数值顺序对它们进行比较。 如果引用的字符串包含规范格式的数字,则按数字顺序对其进行比较。 但是,如果引用的字符串包含非规范格式的数字(例如,'00''0.4''+4'),则将其作为字符串进行比较。 字符串比较按排序顺序逐字符执行。 任何字符串值都大于任何数字值。

空字符串大于任何数字值,但小于任何其他字符串值。

如果返回值是一个数字,LEAST将以规范格式返回它(删除前导和末尾的零,等等)。 如果返回值是一个字符串,LEAST将不改变返回值,包括任何开头或结尾的空格。

LEAST返回逗号分隔的一系列表达式中的最小值。 GREATEST

0
0 105
Job Rachel You · 三月 7, 2022

公司名称:医元数科技有限公司

职务:软件开发工程师

工作地点:北京或上海

直属上级:技术主管

职责概述:1.负责公司软件产品相关的工作,需求,设计,测试,完成和交付。负责产品需求分析,产品规划。

                    2.了解实际业务,将业务转化为需求

                    3.撰写需求文档,产品原型,协助开发/UI理解和掌握需求,对产品需求方向和业务目标负责

                    4.负责在项目推进过程与研发团队及外包团队的协调沟通工作,确保产品按时完成并高质量上线

                    5.负责跟进产品上线后的异常监控,业务培训,业务需求汇集,完善产品功能,提升系统可用性

核心能力:1.逻辑分析能力  2.沟通和协调能力  3.有业务领域模型的认知  4.良好的跨团队协作能力

工作经验:1.3-5年软件系统开发经验和产品经验

                    2.参与3-5个软件系统项目

                    3.健康医疗行业经验优先

学历/资格要求:1.计算机科学学士学位或等效的相关学位

                              2.项目管理证书

年龄要求:无

有意者请将简历发送至:hr@silvermountain.com.cn

0
0 375
文章 Michael Lei · 三月 6, 2022 3m read

我们所有的工作环境都是Ensemble 2017.2。但我们最近将迁移到IRIS for Health 2021.1版本。这是一个复杂的过程,但经过仔细考虑,我们找到了实现这一目标的方法。

我们有一个开发服务器和两个生产服务器的镜像,采用Failover模式。我们有40多个名称空间在使用中,有些有HL7集成,有些有Soap服务、Rest服务、文件处理......什么都有点。我们需要确定向IRIS的迁移不会出现问题,最重要的是,我们需要不惜一切代价避免服务中断。因此,我们必须做的第一件事是建立一个计划。

0
1 198
文章 姚 鑫 · 三月 6, 2022 2m read

第七十三章 SQL函数 LCASE

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

大纲

LCASE(string-expression)

{fn LCASE(string-expression)}

参数

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

描述

LCASE将大写字母转换为小写字母用于显示。 它对非字母字符没有影响。 它保留没有改变的标点符号以及前导和末尾的空格。

LCASE不强制将数字解释为字符串。 SQL将数字转换为规范形式,删除前导和后导零。 SQL不将数字字符串转换为规范形式。

LOWER函数也可以用来将大写字母转换为小写字母。

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

示例

下面的例子以小写字母返回每个人的名字:

SELECT TOP 10 Name,{fn LCASE(Name)} AS LowName
     FROM Sample.Person

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

/// d ##class(PHA.TEST.SQLCommand).
0
0 166
文章 姚 鑫 · 三月 5, 2022 2m read

第七十二章 SQL函数 LAST_IDENTITY

返回最后插入、更新、删除或读取的行的标识的标量函数。

大纲

LAST_IDENTITY()

描述

LAST_IDENTITY函数返回%ROWID局部变量值。在嵌入式SQLODBC中将%ROWID局部变量设置为一个值。动态SQL、SQL Shell或管理门户SQL界面未将%ROWID局部变量设置为值。动态SQL改为设置%ROWID对象属性。

LAST_IDENTITY函数不接受任何参数。请注意,参数括号是必需的。

LAST_IDENTITY返回受当前进程影响的最后一行的标识字段值。如果表没有标识字段,则返回受当前进程影响的最后一行的行ID(%ROWID)。返回值为数据类型INTEGER

  • 对于嵌入式SQL INSERTUPDATEDELETETRUNCATE TABLE语句,LAST_IDENTITY返回最后修改的行的IDENTITY%ROWID值。
  • 对于嵌入式SQL基于游标的SELECT语句,LAST_IDENTITY返回检索到的最后一行的IDENTITY%ROWID值。但是,如果基于游标的SELECT语句包括DISTINCT关键字或GROUP BY子句,则LAST_IDENTITY不会更改;它将返回其先前的值(如果有)。
  • 对于嵌入式SQL单行(非游标)SELECT语句,LAST_IDENTITY不会更改。返回先前的值(如果有)。
0
0 132
文章 姚 鑫 · 三月 4, 2022 2m read

第七十一章 SQL函数 LAST_DAY

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

大纲

LAST_DAY(date-expression)

参数

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

描述

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

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

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

%TIMESTAMP字符串的时间部分是可选的。

指定无效日期时,LAST_DAY返回0(显示模式为12/31/1840):日或月为零;大于12的月;或大于当年该月天数的日。年份必须在00019999之间。

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

  WRITE $SYSTEM.SQL.Functions.LASTDAY("2018-02-22"),!
  WRITE $SYSTEM.SQL.Functions.
0
0 131
文章 姚 鑫 · 三月 3, 2022 4m read

第七十章 SQL函数 $JUSTIFY

在指定宽度内右对齐值的函数,可以选择舍入到指定的小数位数。

大纲

$JUSTIFY(expression,width[,decimal])

参数

  • expression - 要右对齐的值。它可以是数字值、字符串文字或解析为数字或字符串的表达式。
  • width - 表达式要在其中右对齐的字符数。正整数或计算结果为正整数的表达式。
  • decimal - 可选-小数位数。正整数或计算结果为正整数的表达式。将表达式中的小数位数四舍五入或填充到此值。如果指定DECIMAL,会将表达式视为数字。

描述

$JUSTIFY返回在指定宽度内右对齐的表达式指定的值。可以包括小数参数以在宽度内小数对齐数字。

  • $JUSTUST(expression,width):双参数语法在宽度内右对齐表达式。它不执行任何表达式转换。该表达式可以是数字字符串,也可以是非数字字符串。
  • $JUSTUST(expression,width,decimal):3参数语法将表达式转换为规范数字,将小数位四舍五入或零填充为小数,然后在宽度内右对齐生成的数值。如果表达式是非数字字符串或NULL,会将其转换为0,填充,然后右对齐。

$JUSTIFY识别当前区域设置的DecimalSeparator字符。 它根据需要添加或删除DecimalSeparator字符。

0
0 136
公告 Jeff Liu · 三月 3, 2022

欢迎来到2月22日的社区新闻发布!

我们很高兴为InterSystems的开发者介绍我们全新的社区活动日历:

🎯 https://community.intersystems.com/events 

在这个日历中,你将看到特区活动的历史。了解现在或即将发生的活动,查看过去的活动,并观看社区的网络研讨会和聚会的录音。

让我们仔细看看如何使用它。

0
0 156
文章 Frank Ma · 三月 2, 2022 5m read

好人不需要规则。

神秘博士

要成为日期和时间的主人并不是一件容易的事,在任何编程语言中,这总是一个问题,有时会让人感到困惑,我们将澄清并提出一些提示,使这项任务尽可能简单。

坐上TARDIS,我将把你变成一个时间领主。

Tardis

0
0 850
文章 Frank Ma · 三月 2, 2022 2m read

如果你的嵌入式Python代码调用了 tkinter library库(它被很多图形制作库使用,包括matplotlib),你可能会得到这个错误:

<THROW> *%Exception.PythonException <CLASS DOES NOT EXIST> 230 ^^0^DO ##CLASS(User.Test).Test() 
<class '_tkinter.TclError'>: Can't find a usable init.tcl in the following directories:

c:/intersystems/irispy/lib/python/lib/tcl8.6
c:/intersystems/irispy/lib/tcl8.6
c:/intersystems/lib/tcl8.6
c:/intersystems/irispy/library
c:/intersystems/library
c:/intersystems/tcl8.6.9/library
c:/tcl8.6.9/library

This probably means that Tcl wasn't installed properly.

下面是一个触发这个错误的代码样本:

Class User.Test
{

/// do ##class(User.
0
0 1262
文章 Frank Ma · 三月 2, 2022 3m read

如何检查密码是否足够强大,使其不会很快被破解? 又如何制作一个强大的密码?

我开发了一个工具,可能对这个问题有帮助。你可以在OpenExchange上找到它。用zpm安装。

zpm "install passwords-tool"

这个模块将只安装一个类 caretdev.Passwords中,其中包含一些有用的方法。

安全密码 

要获得一个安全的密码,通常只需使用大写和小写的字母、数字和特殊符号,而且至少要有8个符号的长度。 

Generate方法使用的参数:

  • Length - 只是一个生成密码的长度,默认值为12。
  • IncludeUpperLetter - 包括大写的ASCII字母,如果需要的话是2,默认是1。
  • IncludeLowerLetter - 包括小写ASCII字母,如果需要的话,默认为2。
  • IncludeNumber - 包括数字,如果需要的话,2个,默认为1个。
  • IncludeSymbol - 包括特殊符号,如果需要的话,2个,默认为1个。
USER>w ##class(caretdev.Passwords).Generate(12,1,0,0,0)
FMXRQEQPOVBC
USER>w ##class(caretdev.Passwords).
0
0 202
文章 Frank Ma · 三月 2, 2022 2m read

我们很高兴与你分享有趣的信息,以及告诉你为什么Python是好的,它被用在哪里。

其中使用最多的库是NumPy和Pandas。NumPy(Numerical Python)用来对大型数据集进行分类。它简化了数组上的数学运算及其矢量化。Pandas提供两种数据结构:系列Series(一个元素列表)和数据框架DataFrames(一个有多列的表格)。这个库将数据转换为数据框架,允许你删除和添加新的列,以及执行各种操作。

Python为数据分析项目提供了无数的工具,可以帮助完成任何任务。

0
0 459
文章 Frank Ma · 三月 2, 2022 12m read

各位好,

你曾建立过一个镜像环境吗?它是否有一个私有网络、虚拟IP地址和SSL配置? 在做了几次之后,我意识到这是一个漫长的过程,而且需要很多手动操作来生成证书和配置每个IRIS实例。 对于经常要做这件事的人来说,这是一个痛苦的过程。

例如,质量保证团队可能需要为每个新的应用程序版本创建一个新的镜像环境来测试。支持团队可能需要创建一个镜像环境来重现一个复杂的问题。

我们肯定需要工具来快速创建这些镜像环境。

在这篇文章中,我们将用如下环境创建一个镜像样例:

  • 仲裁机
  • 主服务器
  • 故障切换备份成员
  • 读写报告异步成员
  • 节点间日志转移的SSL配置
  • 镜像环境中的私有网络
  • 虚拟IP地址
  • 镜像数据库

network-schema

乍一看,它似乎有点复杂,看起来需要大量的代码,但不要担心。 在OpenExchange上有一些库,可以轻松地执行大多数操作。

本文的目的是提供一个例子,说明如何根据你的需要调整这个过程,但在安全问题上,它不是一个最佳实践指南。 现在,让我们来创建我们的样本。

工具和库

  • PKI-script: 公钥基础设施(PKI)是一个与IRIS集成的功能,它允许你生成一个自签名的证书并拥有你的授权服务器。在伟大的Pete Greskoff的文章之后,PKI-script的目标是以编程方式执行所有操作,避免在管理门户中进行任何手动操作。 该库包括用于镜像的实用方法。

0
0 562
文章 姚 鑫 · 三月 1, 2022 8m read

第六十九章 SQL函数 JSON_OBJECT

将数据作为JSON对象返回的转换函数。

大纲

JSON_OBJECT(key:value [,key:value][,...] [NULL ON NULL | ABSENT ON NULL])

参数

  • key:value - 键:值对或逗号分隔的键:值对列表。键是由单引号分隔的用户指定的文字字符串。值可以是列名、聚合函数、算术表达式、数字或字符串文字或文字NULL
  • ABSENT ON NULL NULL ON NULL - 可选-指定如何在返回的JSON对象中表示空值的关键字短语。NULL ON NULL(缺省值)表示带有单词NULL(未引号)的NULL(缺少)数据。在NULL上缺失将从JSON对象中省略NULL数据;当valueNULL且不保留占位符逗号时,它将删除key:value对。此关键字短语对空字符串值没有影响。

描述

JSON_OBJECT接受逗号分隔的键:值对列表(例如,‘MyKey’:colname),并返回包含这些值的JSON对象。可以指定任何单引号字符串作为键名;JSON_OBJECT不强制任何命名约定或对键名进行唯一性检查。可以为值指定列名或其他表达式。

JSON_OBJECT可以在SELECT语句中与其他类型的SELECT-Items

0
0 179
文章 姚 鑫 · 二月 28, 2022 5m read

第六十八章 SQL函数 JSON_ARRAY

JSON数组形式返回数据的转换函数。

大纲

JSON_ARRAY(expression [,expression][,...] [NULL ON NULL | ABSENT ON NULL])

参数

  • expression - 表达式或逗号分隔的表达式列表。这些表达式可以包括列名、聚合函数、算术表达式、文字和文字NULL
  • ABSENT ON NULL NULL ON NULL - 可选-指定如何在返回的JSON数组中表示空值的关键字短语。NULL ON NULL(缺省值)表示带有单词NULL(未引号)的NULL(缺少)数据。在NULL上不存在将从JSON数组中省略空数据;它不会保留占位符逗号。此关键字短语对空字符串值没有影响。

描述

Json_array接受表达式或(更常见的)逗号分隔的表达式列表,并返回包含这些值的JSON数组。Json_array可以在SELECT语句中与其他类型的SELECT-Items结合使用。可以在可以使用SQL函数的其他位置指定json_array,例如在WHERE子句中。

返回的JSON数组格式如下:

[ element1 , element2 , element3 ]

Json_array以字符串(用双引号括起来)或数字形式返回每个数组元素值。数字以规范格式返回。

0
0 524
文章 姚 鑫 · 二月 27, 2022 2m read

第六十七章 SQL函数 ISNUMERIC

测试有效数字的数值函数。

大纲

ISNUMERIC(check-expression)

参数

  • check-expression - 要计算的表达式。

ISNUMERIC返回SMALLINT数据类型。

描述

ISNUMERIC计算check-expression并返回下列值之一:

  • 如果check表达式是有效数字,则返回1。有效数字可以是数字表达式,也可以是表示有效数字的字符串。
    • 数值表达式首先转换为规范形式,解析多个前导符号;因此,诸如+-+34这样的数值表达式是有效的数字。
    • 在求值之前不会转换数字字符串。数字字符串最多只能有一个前导符号才能计算为有效数字。带有尾随小数点的数字字符串的计算结果为有效数字。
  • 如果check-expression不是有效数字,则返回0。任何包含非数字字符的字符串都不是有效数字。具有多个前导符号的数字字符串(如‘+-+34’)不会被计算为有效数字。编码列表始终返回0,即使其元素是有效数字也是如此。空字符串ISNUMERIC(‘’)返回0。
  • 如果check-expressionNULL,则返回NULLISNUMERIC(NULL)返回NULL

如果科学记数法指数大于308(308-(整数数-1)),ISNUMERIC会生成SQLCODE-7,指数超出范围错误。

0
0 133