文章 姚 鑫 · 五月 5, 2022 3m read

第133章 SQL函数 STRING

第133章 SQL函数 STRING

将表达式转换并连接成字符串的函数。

大纲

STRING(string1[,string2][,...][,stringN])

参数

  • string - 表达式,可以是字段名称、字符串文字、数字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHARVARCHAR)。如果指定了字段名称,则使用逻辑值。

描述

STRING 将一个或多个字符串转换为 STRING 格式,然后将这些字符串连接成一个字符串。不执行大小写转换。

STRING 在字符串转换之前将数字转换为其规范形式。因此,它执行算术运算,从数字中删除前导和尾随零以及前导加号。

如果字符串参数之一为 NULL,则 STRING 返回 NULL。如果字符串参数之一是空字符串 (''),则 STRING 将连接其他参数。 STRING 保留空格。

可以使用 %SQLSTRING 函数转换数据值以进行区分大小写的字符串比较,或使用 %SQLUPPER 函数转换数据值以进行不区分大小写的字符串比较。

示例

在以下嵌入式 SQL 示例中,STRING 将三个子字符串连接成一个字符串。该示例显示了空格、空字符串和 NULL 的处理:

/// d ##class(PHA.TEST.SQLFunction).String()
ClassMethod String()
{
	&sql(
		SELECT STRING('a','b','c'),
			STRING('a',' ','c'),
			STRING('a','','c'),
			STRING('a',NULL,'c')
		INTO :w,:x,:y,:z
	)
	if SQLCODE '= 0 {
		w !,"Error code ",SQLCODE 
	} else {
		w !,"Resulting string is:",w
		w !,"Resulting string is:",x
		w !,"Resulting string is:",y
		w !,"Resulting string is:",z 
	}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).String()
 
Resulting string is:abc
Resulting string is:a c
Resulting string is:ac
Resulting string is:

在以下嵌入式 SQL 示例中,STRING 将数字转换为字符串。所有这些 STRING 函数都返回字符串“123”

/// d ##class(PHA.TEST.SQLFunction).String1()
ClassMethod String1()
{
	&sql(
		SELECT STRING(123),
			STRING(+00123.00),
			STRING('1',23),
			STRING(1,(10*2)+3)
		INTO :w,:x,:y,:z
	)
	if SQLCODE '= 0 {
		w !,"Error code ",SQLCODE 
	} else {
		w !,"Resulting string is:",w
		w !,"Resulting string is:",x
		w !,"Resulting string is:",y
		w !,"Resulting string is:",z 
	}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).String1()
 
Resulting string is:123
Resulting string is:123
Resulting string is:123
Resulting string is:123

在以下嵌入式 SQL 示例中,STRING 从字段中检索示例数据并将其连接成一个字符串:

/// d ##class(PHA.TEST.SQLFunction).String2()
ClassMethod String2()
{
	&sql(
		SELECT STRING(Name,Age)
			INTO :x
		FROM Sample.Person
	)
	if SQLCODE '= 0 {
		w !,"Error code ",SQLCODE 
	} else {
		w !,"Resulting string is:",x 
	}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).String2()
 
Resulting string is:yaoxin31