各种技术在交换数据的时候,就需要知道对方给的数据使用什么字符集和字符编码,否则很可能就解码错了。这里列举了医疗行业常见的数据交换技术方式和它们对字符集使用的声明方式。
Linux内核机制OOM Killer,也即Out of Memory Killer, 顾名思义,该机制的主要职能就是当内存不足时,选择并杀掉一些进程,以使系统继续运行。
Caché/Ensemble/IRIS的多个客户曾经遇到过与此相关的系统宕机,宕机的直接原因是数据库核心写进程Write Daemon被OOM Killer选中并杀掉了,在我们的日志文件中可以看到如下信息,
06/15/21-10:50:31:035 (13579) 3 Daemon WRTDMN (pid 13588) died.如果想快速查看锁表空间的使用情况,可以通过GetLockSpaceInfo()方法来获得。
%SYS>w ##class(SYS.Lock).GetLockSpaceInfo() 4717392,4712512,1200
返回值是 "AvailableSpace,UsableSpace,UsedSpace",每个值的单位都是Byte。
AvailableSpace:锁表的总空间减去已用空间的大小(UsedSpace)。
UsableSpace:预估的可用空间。AvailableSpace里有一些空间是系统内部保留的,所以UsableSpace比AvailableSpace要小。UsableSpace是用户在锁表中可用的自由空间的数量。
UsedSpace:已经使用的空间。
第三十八章 SQL函数 CURTIME
返回当前本地时间的标量日期/时间函数。
大纲
{fn CURTIME()}
{fn CURTIME}
描述
``不接受任何参数。它将当前本地时间作为数据类型TIME返回。请注意,参数括号是可选的。CURTIME返回此时区的当前本地时间;它根据本地时间变量(如夏令时)进行调整。
逻辑模式下的CURTIME以$HOROLOG格式返回当前本地时间;
例如,37065年。
显示模式下的CURTIME以区域设置的默认格式返回当前本地时间;
例如,10:18:27。
小时以24小时格式表示。
要更改默认的时间格式,使用SET OPTION命令和TIME_FORMAT和TIME_PRECISION选项。
要只返回当前时间,请使用CURTIME或CURRENT_TIME。
这些函数以TIME数据类型返回它们的值。
CURRENT_TIMESTAMP、GETDATE和NOW函数也可以作为TIMESTAMP数据类型返回当前日期和时间。
请注意,除了GETUTCDATE之外,所有 SQL时间和日期函数都特定于当地时区设置。
要获得通用的(独立于时区的)当前时间戳,你可以使用GETUTCDATE或ObjectScript $ZTIMESTAMP特殊变量。
在使用嵌入式SQL时,这些数据类型的性能不同。
第三十七章 SQL函数 CURRENT_TIMESTAMP
日期/时间函数,返回当前本地日期和时间。
大纲
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP(precision)
参数
precision- 一个正整数,它将时间精度指定为小数秒的位数。 默认值是0(没有小数秒); 这个默认值是可配置的。
CURRENT_TIMESTAMP返回TIMESTAMP数据类型。
描述
CURRENT_TIMESTAMP要么不接受参数,要么接受精度参数。
不允许使用空参数括号。
CURRENT_TIMESTAMP返回当前时区的本地日期和时间;
它会根据当地的时间变化进行调整,例如日光节约时间。
CURRENT_TIMESTAMP可以返回%timestamp数据类型格式(yyyy-mm-dd hh:mm:ss.ffff)或%PosixTime数据类型格式(编码的64位带符号整数)的时间戳。
以下规则决定返回哪种时间戳格式:
-
如果将当前时间戳提供给数据类型为
%PosixTime的字段,则当前时间戳值将以PosixTime数据类型格式返回。 例如,WHERE PosixField=CURRENT_TIMESTAMP or INSERT INTO MyTable (PosixField) VALUES (CURRENT_TIMESTAMP).
第三十六章 SQL函数 CURRENT_TIME
返回当前本地时间的日期/时间函数。
大纲
CURRENT_TIME
CURRENT_TIME(precision)
参数
precision- 一个正整数,它将时间精度指定为小数位数。默认值为0(无小数秒);此默认值是可配置的。
CURRENT_TIME返回时间数据类型。
描述
CURRENT_TIME要么不带参数,要么带精度参数。不允许使用空参数括号。
CURRENT_TIME返回此时区的当前本地时间。它会根据当地时间变化(如夏令时)进行调整。
逻辑模式下的CURRENT_TIME以$HOROLOG格式返回当前本地时间;例如,37065。显示模式下的当前时间以区域设置的默认格式返回当前本地时间;例如,10:18:27。
要更改默认时间格式,请使用带有time_format和time_PRECISION选项的SET OPTION命令。可以配置分数秒的精度,如下所述。
要仅返回当前时间,请使用CURRENT_TIME或CURTIME。这些函数以时间数据类型返回它们的值。CURRENT_TIMESTAMP、GETDATE和NOW函数也可用于将当前日期和时间作为TIMESTAMP数据类型返回。
请注意,除GETUTCDATE之外,所有 SQL时间和日期函数都特定于本地时区设置。
亲爱的社区开发者们,大家好!
欢迎积极参与新一轮InterSystems开发者竞赛!
这次我们聚集Python!
竞赛时间: 2022年2月7日 - 27日
奖金总额: $10000 - 更多获奖机会!
欢迎到我们Global Master 网站完成冬奥小游戏,赢积分,抽奖品(雨伞/保温杯/T-Shirt)。
https://globalmasters.intersystems.com/channels/72
不知道如何玩转Global Master, 请参考:认识Global Masters 倡导中心,从这里开始! | InterSystems Developer Community | Global
.png)
.png)
第三十五章 SQL函数 CURRENT_DATE
日期/时间函数,返回当前本地日期。
大纲
CURRENT_DATE
描述
CURRENT_DATE不带任何参数。它将当前本地日期作为数据类型DATE返回。不允许使用参数括号。CURRENT_DATE返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。
在逻辑模式下CURRENT_DATE以$HOROLOG格式返回当前本地日期;
例如,64701。
显示模式下的CURRENT_DATE以区域设置的默认格式返回当前本地日期。
例如,在美国的区域设置为02/22/2018,在欧洲的区域设置为22/02/2018,在俄罗斯的区域设置为22.02.2018。
要指定不同的日期格式,请使用TO_DATE函数。要更改默认日期格式,请将SET OPTION命令与DATE_FORMAT、Year_OPTION或DATE_SEFACTOR选项配合使用。
要仅返回当前日期,请使用CURRENT_DATE或CURDATE。这些函数以DATE数据类型返回它们的值。CURRENT_TIMESTAMP、GETDATE和NOW函数也可用于将当前日期和时间作为TIMESTAMP数据类型返回。
请注意,除GETUTCDATE之外,所有 SQL时间和日期函数都特定于本地时区设置。
@Robert Cemper 我们全球(几乎是)最资深最活跃粉丝最多的社区成员 (最畅销!). Robert 老师从1970年代就开始从事软件行业,从1978年就开始从事MUMPS, DSM, ... Caché, ...IRIS等等直到今天还在活越地写代码。所以跟着Robert老师超过100篇的社区文章中学习 InterSystems 技术是最好不过的选择了。我们按照主题精选了一些文章,后面会陆续翻译,大家希望优先翻译哪一篇,欢迎在评论区留言。
关于SQL
DB Migration using SQLgateway IRIS 使用
第三十四章 SQL函数 CURDATE
返回当前本地日期的标量日期/时间函数。
大纲
{fn CURDATE()}
{fn CURDATE}
描述
CURDATE不接受任何参数。它将当前本地日期作为数据类型DATE返回。请注意,参数括号是可选的。CURDATE返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。
逻辑模式下的CURDATE以$HOROLOG格式返回当前本地日期;
例如,64701。
显示模式下的CURDATE以区域设置的默认格式返回当前本地日期。
例如,在美国的区域设置为02/22/2018,在欧洲的区域设置为22/02/2018,在俄罗斯的区域设置为22.02.2018。
要指定不同的日期格式,请使用TO_DATE函数。
要更改默认的日期格式,使用SET OPTION命令和DATE_FORMAT、YEAR_OPTION或DATE_SEPARATOR选项。
要只返回当前日期,请使用CURDATE或CURRENT_DATE。
这些函数返回DATE数据类型的值。
CURRENT_TIMESTAMP、GETDATE和NOW函数也可以作为TIMESTAMP数据类型返回当前日期和时间。
请注意,除了GETUTCDATE之外,所有 SQL时间和日期函数都特定于当地时区设置。
有时需要将数据和数据模型Schema从Postgres转移或迁移到IRIS。目前有几个选择可以做到这一点,但最流行的两个选项是使用DBeaver(https://openexchange.intersystems.com/package/DBeaver)或SQLGateway。第一种方法… Cemper的一篇优秀文章中介绍,使用 SQLgateway 迁移数据库(https://community.intersystems.com/post/db-migration-using-sqlgateway),请看本文中如何使用DBeaver执行这种迁移。
为迁移过程获取样本数据
在Github上可以下载一个docker compose项目来构建和运行两个数据库。:
- 源数据库: 带有样本数据库的PostgreSQL 数据库 Docker 实例 .
- 目标数据库: 带有Schema就绪接受源数据库的InterSystems IRIS 数据平台Docker 实例.
要获得样本并运行它,请遵循以下步骤:
- 到 https://openexchange.intersystems.com/package/migration-pg-iris-dataset 下载并到 git repository.
- 克隆项目: git clone https://github.
亲爱的开发者们,
很高兴同大家分享一个好消息!我们中文社区版主、InterSystems高级销售工程师Louis(@Louis Lu)于近日顺利通过“HL7 FHIR R4 Proficiency Exam”并取得资格认证证书!
第三十三章 SQL函数 COT
标量数值函数,返回角度的余切值(以弧度为单位)。
大纲
{fn COT(numeric-expression)}
参数
numeric-expression- 数值表达式。 这是一个用弧度表示的角。
COT返回NUMERIC或DOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, COT返回DOUBLE;
否则,返回NUMERIC。
描述
COT接受任何非零数,并以浮点数的形式返回它的余切值。
如果传入NULL值,COT将返回NULL。
数值0(0)会导致运行时错误,生成SQLCODE -400(发生致命错误)。
COT将非数字字符串视为数值0。
COT返回一个精度为36、刻度为18的值。
COT只能用作ODBC标量函数(使用花括号语法)。
可以使用DEGREES函数将弧度转换为角度。
可以使用RADIANS函数来转换角度到弧度。
示例
下面的例子展示了COT的效果:
SELECT {fn COT(0.52)} AS Cotangent
1.746536264145397165
SELECT {fn COT(124.1332)} AS Cotangent
-0.040311998371146672
现代医疗有无数来自数字技术的机会,包括优化流程的指挥中心、支持洞察力和决策的人工智能和机器学习、提供实时数据的物联网和连接设备,以及管理和保护大型数据流的强大数字基础设施。创建数字孪生和使用虚拟技术来推动医疗行业的真实世界价值将这一切结合起来。
数字孪生在医疗领域的真实世界价值
数字孪生是一个物理对象或过程的虚拟副本,通过模拟和反馈物理对应物来学习和发展。它在动态系统建模的同时部署了人工智能和机器学习,并适用于医疗保健和生命科学环境。数字孪生创造了一个机会,在实施干预措施、路径变化和操作改进之前,对系统的影响进行建模和预测,以实现效益最大化和风险最小化。
这种模拟创造了以下机会:测试情景以预测影响和帮助决策(例如,在系统设计和病人治疗中);识别低效、瓶颈和机会,并模拟效益/副作用(例如,在流程优化中);自动化反应和决策(例如,在环境控制中);以及越来越多地在虚拟环境中进行测试(例如,硅研究 - 美国和欧洲监管机构都在探索在新医疗药物和技术的审批中使用此类 "数字证据")。
Hi 开发者们,
New video is already on InterSystems Developers YouTube:
⏯ Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side
第三十二章 SQL函数 COS
标量数值函数,返回一个角的余弦值(以弧度为单位)。
大纲
{fn COS(numeric-expression)}
参数
numeric-expression- 数值表达式。 这是一个用弧度表示的角。
COS返回NUMERIC或DOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, COS返回DOUBLE;
否则,返回NUMERIC。
描述
COS接受任何数值,并以浮点数的形式返回COS。
返回值的范围是-1到1(含1)。
如果传入NULL值,COS将返回NULL。
COS将非数字字符串视为数值0。
COS返回一个精度为19、刻度为18的值。
COS只能用作ODBC标量函数(使用花括号语法)。
可以使用DEGREES函数将弧度转换为角度。
可以使用RADIANS函数来转换角度到弧度。
示例
这些例子说明了COS对两个正弦函数的影响。
SELECT {fn COS(0.52)} AS Cosine
0.8678191796776499
SELECT {fn COS(-.31)} AS Cosine
SELECT {fn COS(-.31)} AS Cosine
请问 iris可以获取服务器CPU使用率,内存使用率,磁盘使用率信息吗,该如何获取?
第三十一章 SQL函数 CONVERT
将给定表达式转换为指定数据类型的函数。
CONVERT(datatype,expression[,format-code])
{fn CONVERT(expression,datatype)}
参数
expression- 要转换的表达式。datatype- 要将表达式转换为的数据类型。format- 可选-指定日期和时间格式的整数代码,用于在日期/时间/时间戳数据类型和字符数据类型之间进行转换。 此参数仅用于通用标量语法形式。
描述
这里描述了CONVERT函数的两种不同实现。
两者都将一种数据类型中的表达式转换为另一种数据类型中的相应值。
两者都执行日期和时间转换。
注意:这两个CONVERT实现中的参数以不同的顺序表示。
第一个是与MS SQL Server兼容的通用 IRIS标量函数,它接受三个参数。
第二个是带有两个参数的 ODBC标量函数。
下面的文本将分别处理这两种形式的CONVERT。
CONVERT(datatype,expression)支持流数据的转换。 例如,可以将字符流字段的内容转换为数据类型为VARCHAR的字符串。{fn CONVERT(expression,datatype)}不支持流数据的转换; 指定要表达的流字段将导致SQLCODE -37错误。
第三十章 SQL函数 CONCAT
标量字符串函数,它返回作为连接两个字符表达式的结果的字符串。
大纲
{fn CONCAT(string-expression1,string-expression2)}
参数
string-expression1,string-expression2- 要连接的字符串表达式。表达式可以是列名、字符串文字、数字或另一个标量函数的结果,其中底层数据类型可以表示为任何字符类型(如CHAR或VARCHAR)。
描述
连接两个字符串以返回连接的字符串。可以使用连接运算符(||)执行完全相同的操作。
可以连接数字或数字字符串的任意组合;连接结果是一个数字字符串。SQL在连接之前将数字转换为规范形式(指数被扩展,前导零和尾随零被删除)。在连接之前,数字字符串不会转换为规范形式。
可以将前导空格或尾随空格连接到字符串。将空值连接到字符串会产生空值;这是行业范围内的SQL标准。
字符串函数还可用于将两个或多个表达式连接成单个字符串。
示例
以下示例连接Home_State和Home_City列以创建位置值。使用CONCAT函数和concatenate运算符显示两次连接:
SELECT {fn CONCAT(Home_State,Home_City)} AS LocationFunc,
Home_State||Home_City AS LocationOp
FROM Sample.第二十九章 SQL函数 COALESCE
返回第一个非空表达式的值的函数。
大纲
COALESCE(expression,expression [,...])
expression- 要计算的一系列表达式。多个表达式被指定为逗号分隔的列表。此表达式列表限制为140个表达式。
描述
COALESSE函数按从左到右的顺序计算表达式列表,并返回第一个非空表达式的值。如果所有表达式的计算结果都为NULL,则返回NULL。
字符串返回时保持不变;保留前导和尾随空格。数字以规范形式返回,去掉了前导零和尾随零。
返回值的数据类型
非数字表达式(如字符串或日期)必须都属于相同的数据类型,并返回该数据类型的值。指定数据类型不兼容的表达式会导致SQLCODE-378错误,并显示DataType不匹配错误消息。可以使用CAST函数将表达式转换为兼容的数据类型。
数值表达式可以是不同的数据类型。如果指定具有不同数据类型的数值表达式,则返回的数据类型是与所有可能的结果值最兼容的表达式数据类型,即具有最高数据类型优先级的数据类型。
文字值(字符串、数字或NULL)被视为数据类型VARCHAR。如果只指定两个表达式,则文字值与数值表达式兼容:如果第一个表达式是数值表达式,则返回其数据类型;如果第一个表达式是文字值,则返回VARCHAR数据类型。
比较NULL处理函数
在IRIS 上怎么实现读写分离?
第二十八章 SQL函数 CHAR_LENGTH
返回表达式中的字符数的函数。
大纲
CHAR_LENGTH(expression)
参数
expression- 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHAR或VARCHAR)、数字或数据流。
CHAR_LENGTH返回整数数据类型。
描述
CHAR_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0。
在计算字符之前,会将数字解析为规范形式;不会解析带引号的数字字符串。在下面的示例中,第一个CHAR_LENGTH返回1(因为数字分析删除了前导和尾随零),第二个CHAR_LENGTH返回8。
SELECT CHAR_LENGTH(007.0000) AS NumLen,
CHAR_LENGTH('007.0000') AS NumStringLen
1 8
注意:CHAR_LENGTH、CHARACTER_LENGTH和DATALENGTH函数是相同的。
它们都接受一个流字段参数。
第二十七章 SQL函数 CHARINDEX
一个字符串函数,它返回子字符串在字符串中的位置,具有可选的搜索起点。
大纲
CHARINDEX(substring,string[,start])
参数
substring- 要在字符串中匹配的子字符串。string- 作为子字符串搜索目标的字符串表达式。start- 可选-子字符串搜索的起始点,指定为正整数。 从字符串开始的字符计数,从1开始计数。 若要从字符串的开头开始搜索,请忽略此参数或指定从0或1开始。 负数、空字符串、NULL或非数字值被视为0。
CHARINDEX返回INTEGER数据类型。
描述
CHARINDEX在字符串中搜索子字符串。
如果找到匹配,则返回第一个匹配子字符串的起始位置,从1开始计算。
如果不能找到子字符串,CHARINDEX返回0。
空字符串是一个字符串值。
因此,可以将空字符串用于任意一个字符串参数值。
start参数将空字符串值视为0。
但是,请注意ObjectScript空字符串作为NULL传递给 SQL。
NULL不是SQL中的字符串值。
因此,为任何一个CHARINDEX字符串参数指定NULL都会返回NULL。
CHARINDEX不能将%Stream.GlobalCharacter字段用于字符串或子字符串参数。尝试这样做会生成SQLCODE-37错误。可以使用SUBSTRING函数获取%Stream.
第二十六章 SQL函数 CHARACTER_LENGTH
返回表达式中的字符数的函数。
大纲
CHARACTER_LENGTH(expression)
参数
expression- 表达式,可以是列名、字符串文字或另一个标量函数的结果。底层数据类型可以是字符类型(如CHAR或VARCHAR)、数字或数据流。
CHARACTER_LENGTH返回整数数据类型。
描述
CHARACTER_LENGTH返回一个整数值,表示指定表达式中的字符数,而不是字节数。表达式可以是字符串,也可以是任何其他数据类型,如数字或数据流字段。返回的整数计数包括前导和尾随空格以及字符串终止字符。如果传递NULL值,则CHARACTER_LENGTH返回NULL,如果传递空字符串(‘’)值,则返回0。
在计算字符之前,会将数字解析为规范形式;不会解析带引号的数字字符串。在下面的示例中,第一个CHARACTER_LENGTH返回1(因为数字分析删除了前导和尾随零),第二个CHARACTER_LENGTH返回8。
SELECT CHARACTER_LENGTH(007.0000) AS NumLen,
CHARACTER_LENGTH('007.0000') AS NumStringLen
注意:CHARACTER_LENGTH、CHAR_LENGTH和DATALENGTH函数是相同的。
感谢您在 2021 年对 InterSystems 社区的贡献!我们统计了最热门的帖子、讨论最多的话题、最受欢迎的作者等等,供您参考!
2021年,InterSystems开发者社区中文版收到了很多提问/问题。
各大技术社区常年充斥着关于字符集支持、乱码的问题。Cache’/Ensemble/HealthConnect/IRIS的用户也经常遇到这类问题。为何文字乱码在信息化发展这么久后还会困扰我们?因为字符集、多语言实在有点复杂。
我计划写三篇:第一篇花点时间回顾一下多语言字符集的简史,第二篇介绍一下各种技术对于字符集和字符编码的使用声明,最后一篇会介绍常见的ISC技术和工具的乱码、尤其是中文乱码的现象和解决办法。

.png)

