我们很高兴地宣布,从7.2.4版本开始,DBeaver已经支持开箱即用InterSystems IRIS的。 你不需要再手动配置它,只要在连接列表中找到IRIS的图标即可。
.png)
我们很高兴地宣布,从7.2.4版本开始,DBeaver已经支持开箱即用InterSystems IRIS的。 你不需要再手动配置它,只要在连接列表中找到IRIS的图标即可。
.png)
可以使用 DDD 将一年中的某一天(自 1 月 1 日以来经过的天数)转换为实际日期。格式字符串 DDD YYYY 必须与由整数天数和四位数年份组成的相应 配对。 (与 一起使用时,两位数的年份必须指定为 (而不是 )。)格式字符串 默认为当前年份。经过的天数必须是 1 到 范围内的正整数(如果 是闰年,则为 )。四位数年份必须在标准 日期范围内: 到 。 和 格式元素可以按任意顺序指定;它们之间的分隔符是强制性的。以下示例显示了这一年中的一天的用法:
/// d ##class(PHA.TEST.SQLFunction).ToDate4()
ClassMethod ToDate4()
{
NEW SQLCODE
&sql(
SELECT TO_DATE('2018:60','YYYY:DDD')
INTO :a
)
if SQLCODE = 0 {
w a," = ",$ZDATE(a,1,,4)
} else {
w "error:",SQLCODE
}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToDate4()
64708 = 03/01/2018
如果格式字符串同时包含 和
将格式化字符串转换为日期的日期函数。
TO_DATE(date_string[,format])
TODATE(date_string[,format])
date_string - 要转换为日期的字符串。基础数据类型为 CHAR 或 VARCHAR2 的字符串日期表达式。DD MON YYYY& 是默认值;此默认值是可配置的。名称 TO_DATE 和 是可互换的,并且支持 Oracle 兼容性。
TO_DATE 函数将各种格式的日期字符串转换为日期整数值,数据类型为 。它用于输入各种字符串格式的日期,并将它们存储在标准的内部表示中。 返回具有以下格式的日期:
其中 是介于 0(1840 年 12 月 31 日)和 2980013(9999 年 12 月 31 日)之间的正整数,包括端点。这表示天数。时间值被忽略。 1840 年 12 月 31 日之前的日期可以使用儒略日期来表示,如下所述。
也可以使用 方法调用从 ObjectScript 调用此函数:
$SYSTEM.SQL.Functions.TODATE(date_string,format)
在为字段提供默认值时,可以在数据定义中使用 函数。
以下嵌入式 SQL 示例显示了基本的数字到字符串的转换:
/// d ##class(PHA.TEST.SQLFunction).ToChar3()
ClassMethod ToChar3()
{
&sql(
SELECT
TO_CHAR(1000,'9999'),
TO_CHAR(10,'9999')
INTO
:numfull,:numshort
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"Formatted number:",numfull
w !,"Formatted number:",numshort
w !,"Note leading blanks"
}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).ToChar3()
Formatted number: 1000
Formatted number: 10
Note leading blank
返回具有适当数量的前导空格的指定数字。无符号正数前面总是有一个空白字符。如果指定数字的位数少于格式参数,则提供额外的前导空格。
可以使用 TO_CHAR 将以下 tochar 表达式时间值转换为格式化的时间字符串:
$HOROLOG 时间整数($HOROLOG 的时间部分)。 tochar-expression 的值必须是有效的逻辑时间( 到 范围内的整数)。不要提供包含日期和时间组件的完整 值(例如 ); 时间转换会错误地将 的第一个(日期)组件转换为格式化的时间字符串,并忽略第二个(时间)组件。TimeSeparator 设置为,则 的值可以采用 格式,并且可以是字符串。在所有这些情况下,格式的值必须是一个只包含时间格式代码的字符串:
| Format | Code Meaning |
|---|---|
| HH | 一天中的小时(1 到 12) |
| HH12 | 一天中的小时(1 到 12) |
| HH24 | 小时(0 到 23) |
| MI | 分钟(0 到 59) |
| SS |
将日期、时间戳或数字转换为格式化字符串的字符串函数。
TO_CHAR(tochar-expression[,format])
TOCHAR(tochar-expression[,format])
tochar-expression - 要转换的逻辑日期、时间戳或数字表达式。format - 可选 — 为 tochar 表达式转换指定日期、时间戳或数字格式的字符代码。如果省略,TO_CHAR 将 作为规范数字返回。名称 TO_CHAR 和 是可互换的,并且支持 Oracle 兼容性。
带格式的 TO_CHAR 函数有五种用途:
将日期整数转换为格式化的日期字符串。
日期在1840年之前转换为朱利安日期int
时间的整数转换为格式化时间生态
将日期和时间格式化的datetime
将数字转换成一个格式化的数字字符串。
这个函数也可以从调用
$SYSTEM.SQL.Functions.TOCHAR(tochar-expression,format)
一个标量日期/时间函数,它返回指定日期部分的两个时间戳之间差异的整数计数。
{fn TIMESTAMPDIFF(interval-type,startdate,enddate)}
interval-type - 返回值将表示的时间/日期间隔类型。startdate - 时间戳值表达式。enddate - 将与 startdate 进行比较的时间戳值表达式。函数返回指定日期部分间隔(秒、天、周等)的两个给定时间戳之间的差异(即,从另一个中减去一个时间戳)。返回的值是一个 ,即两个时间戳之间的这些间隔数。 (如果 早于 ,则 返回负 值。)
开始日期和结束日期是时间戳。这些时间戳可以是 数据类型格式 () 或 %Library.PosixTime 数据类型格式(编码的 位有符号整数)。
间隔类型参数可以是以下时间戳间隔之一:
SQL_TSI_FRAC_SECOND
SQL_TSI_SECOND
SQL_TSI_MINUTE
一个标量日期/时间函数,它返回一个新的时间戳,该时间戳是通过将指定日期部分的多个间隔添加到时间戳来计算的。
{fn TIMESTAMPADD(interval-type,integer-exp,timestamp-exp)}
interval-type - integer-exp 表示的时间/日期间隔类型,指定为关键字。integer-exp - 要添加到 的整数值表达式。timestamp-exp - 时间戳值表达式,将增加 的值。函数通过将指定的日期部分增加指定的单位数来修改日期/时间表达式。例如,如果 是 并且 是 ,则 将 增加五个月。还可以通过为 指定负整数来减少日期部分。
返回与输入 数据类型相同的时间戳。此时间戳可以是 %Library.TimeStamp 数据类型格式 () 或 数据类型格式(编码的 位有符号整数)。
请注意, 只能用作 标量函数(使用大括号语法)。
可以使用 通用函数对时间戳执行类似的时间/日期修改操作。
间隔类型参数可以是以下时间戳间隔之一:
SQL_TSI_FRAC_SECONDSQL_TSI_MINUTE这些时间戳间隔可以使用单引号或双引号来指定,带或不带引号。它们不区分大小写。
标量数值函数,返回角度的正切(以弧度为单位)。
{fn TAN(numeric-expression)}
numeric-expression - 一个数值表达式。这是一个以弧度表示的角度。TAN 返回 NUMERIC 或 数据类型。如果 是数据类型 DOUBLE,则 TAN 返回 ;否则,它返回 。
接受任何数值并返回其切线。如果传递 值,TAN 返回 。 将非数字字符串视为数值 。
返回一个精度为 、比例为 18 的值。
只能用作 标量函数(使用大括号语法)。
可以使用 函数将弧度转换为度数。可以使用 函数将度数转换为弧度。
以下示例显示了 TAN 的效果。
SELECT {fn TAN(0.52)} AS Tangent
0.572561830251668415
字符串函数,它从任何数据类型的数据(包括流数据)中返回一个子字符串。
SUBSTRING(string-expression,start[,length])
SUBSTRING(string-expression FROM start [FOR length])
{fn SUBSTRING(string-expression,start[,length])}
string-expression - 要从中派生子字符串的字符串表达式。表达式,可以是列名、字符串文字或另一个标量函数的结果。字段可以是任何数据类型:字符串(例如 CHAR 或 VARCHAR)、数字或数据类型为 或 的数据流字段。string-expression 中的第一个字符位于位置 。如果起始位置高于字符串的长度,则 返回一个空字符串 。如果起始位置小于 (零或负数),则子字符串从位置 开始,但子字符串的长度会减少起始位置。接受任何数据类型的数据并将该数据的子字符串作为数据类型 返回。当然,子字符串可以是作为字符串返回的完整数据值。
的值控制子字符串的起点:
1返回从指定字符串表达式派生的子字符串的字符串函数。
SUBSTR(string-expression,start[,length])
string-expression - 要从中派生子字符串的字符串表达式。表达式可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。1。负起始位置指定从字符串末尾算起的字符数。如果 为 (零),则将其视为 。NULL。因为 可以是负数,所以可以从原始字符串的开头或结尾获取子字符串。
作为参数传递给 的浮点数通过截断小数部分转换为整数。
–0 或 ,则返回的子字符串从字符串的第一个字符开始。start字符串函数,用于替换字符串中的子字符串。
STUFF(string,start,length,substring)
string - 作为子字符串替换目标的字符串表达式。start - 替换的起点,指定为正整数。从字符串开头开始的字符数,从 1 开始计数。允许的值为 0 到字符串的长度。要追加字符,请指定 的开头和 的长度。空字符串或非数字值被视为 。0。用另一个子字符串替换一个子字符串。它标识要替换为位置和长度的子字符串,并将其替换为子字符串。
此函数提供与 实现的兼容性。
替换子字符串可能比原始值长或短。要删除原始值,子字符串可以是空字符串 ()。
起始值必须在字符串的当前长度范围内。您可以通过指定起始值 0 将子字符串附加到字符串的开头。空字符串或非数字值被视为 。
为 start、 或 参数指定 将返回 。
不能将 字段用于字符串或子字符串参数。尝试这样做会生成 SQLCODE -37 错误。
和 都执行子字符串替换。
将表达式转换并连接成字符串的函数。
STRING(string1[,string2][,...][,stringN])
string - 表达式,可以是字段名称、字符串文字、数字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。如果指定了字段名称,则使用逻辑值。STRING 将一个或多个字符串转换为 STRING 格式,然后将这些字符串连接成一个字符串。不执行大小写转换。
在字符串转换之前将数字转换为其规范形式。因此,它执行算术运算,从数字中删除前导和尾随零以及前导加号。
如果字符串参数之一为 ,则 STRING 返回 。如果字符串参数之一是空字符串 (),则 将连接其他参数。 保留空格。
可以使用 函数转换数据值以进行区分大小写的字符串比较,或使用 函数转换数据值以进行不区分大小写的字符串比较。
在以下嵌入式 SQL 示例中,STRING 将三个子字符串连接成一个字符串。该示例显示了空格、空字符串和 的处理:
/// 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
}
}
将数字转换为字符串的函数。
STR(number[,length[,decimals]])
number - 解析为数字的表达式。它可以是字段名称、数字或其他函数的结果。如果指定了字段名称,则使用逻辑值。length - 可选 — 一个整数,指定所需输出字符串的总长度,包括所有字符(数字、小数点、符号、空格)。默认值为 10。decimals - 可选 — 一个整数,指定要包含的小数点右侧的位数。默认值为 0。将数字转换为 格式,根据长度和小数的值截断数字。长度参数必须足够大以包含数字的整个整数部分,并且,如果指定小数,则该小数位数加 (用于小数点)。如果长度不够大,则 将返回一个星号 () 字符串,该字符串等于长度。
在字符串转换之前将数字转换为其规范形式。因此,它执行算术运算,从数字中删除前导和尾随零以及前导加号。
如果 参数为 NULL,则 返回 。如果 参数是空字符串 (),则 返回空字符串。 保留空格。
在以下嵌入式 示例中, 将数字转换为字符串:
/// d ##class(PHA.TEST.SQLFunction).Str()
ClassMethod Str()
{
&sql(
SELECT STR(123),
STR(123,4),
STR(+00123.45,3),
STR(+00123.45,3,1),
STR(+00123.45,5,1)
INTO :v,:w,:x,:y,:z
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"Resulting STR:",v," string"
w !,"Resulting STR:",w," string"
w !,"Resulting STR:",x," string"
w !,"Resulting STR:",y," string"
w !,"Resulting STR:",z," string"
}
}
返回数字平方的标量数值函数。
SQUARE(numeric-expression)
numeric-expression - 解析为数值的表达式。SQUARE 返回 NUMERIC 或 数据类型。如果 是数据类型 ,则 返回 ;否则,它返回 。
返回数值表达式的平方。如果传递 值,SQUARE 返回 。
返回的精度和小数位数与 乘法运算符返回的相同。
以下嵌入式 SQL 示例返回整数 到 10 的平方:
/// d ##class(PHA.TEST.SQLFunction).Square()
ClassMethod Square()
{
s a = 0
while a < 11 {
&sql(
SELECT SQUARE(:a) INTO :b
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"The square of ",a," = ",b
s a = a + 1
}
}
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).Square()
The square of 0 = 0
The square of 1 = 1
The square of 2 = 4
The square of 3 = 9
The square of 4 = 16
The square of 5 = 25
The square of 6 = 36
The square of 7 = 49
The square of 8 = 64
The square of 9 = 81
The square of 10 = 100
返回给定数值表达式的平方根的数值函数。
SQRT(numeric-expression)
{fn SQRT(numeric-expression)}
numeric-expression - 解析为计算平方根的正数的表达式。SQRT 返回 NUMERIC 或 数据类型。如果 是数据类型 ,则 返回 ;否则,它返回 NUMERIC。
返回 的平方根。 numeric-expression 必须是正数。负数值表达式( 除外)会生成 错误。如果传递 值, 返回 。
返回一个精度为 、小数位数为 18 的值。
可以指定为常规标量函数或 标量函数(使用大括号语法)。
以下示例显示了两种 语法形式。两者都返回 的平方根:
SELECT SQRT(49) AS SRoot,{fn SQRT(49)} AS ODBCSRoot
7 7
以下嵌入式 示例返回整数 到 的平方根:
/// d ##class(PHA.TEST.SQLFunction).Sort()
ClassMethod Sort()
{
s a = 0
while a < 11 {
&sql(
SELECT SQRT(:a) INTO :b
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"The square root of ",a," = ",b
s a = a + 1
}
}
}
将值排序为大写字符串的排序规则函数。
%SQLUPPER(expression[,maxlen])
%SQLUPPER expression
expression - 字符串表达式,可以是列名、字符串文字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。表达式可以是子查询。maxlen 包括附加的前导空格。您可以用双括号将 括起来以抑制文字替换:(())。SQLUPPER 是默认排序规则。
将表达式转换为排序为(不区分大小写)大写字符串的格式。 将所有字母字符转换为大写,从字符串中去除尾随空格(空格、制表符等),然后在字符串开头添加一个前导空格。这个附加的空格会导致 NULL 和数值被整理为字符串。
在将数字传递给函数之前将数值转换为规范形式(删除前导零和尾随零、扩展指数等)。 不会将数字字符串转换为规范形式。
因为 %SQLUPPER 将空格附加到所有值,所以它将 值作为空格进行整理,字符串长度为 1。 将任何仅包含空格(空格、制表符等)的值整理为 SQL 空字符串 ()。当
将值排序为字符串的排序规则函数。
%SQLSTRING(expression[,maxlen])
%SQLSTRING expression
expression - 字符串表达式,可以是列名、字符串文字或另一个函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。表达式可以是子查询。maxlen 包括附加的前导空格。可以用双括号将 括起来以抑制文字替换:(())。%SQLSTRING 将表达式转换为按(区分大小写)字符串排序的格式。 从字符串中去除尾随空格(空格、制表符等),然后在字符串的开头添加一个前导空格。这个附加的空格强制将 NULL 和数值作为字符串进行整理。从数字中删除前导零和尾随零。
因为 将空格附加到所有值,所以它将 值整理为空格,字符串长度为 1。 将任何仅包含空格(空格、制表符等)的值整理为 SQL 空字符串()。当 将空格附加到空(零长度)字符串时,它会将空格加上空字符串的内部表示形式 进行整理,从而导致字符串长度为 。
可选的 参数在索引或整理时将表达式字符串截断为指定的字符数。例如,如果插入带有 截断的字符串,则插入完整的字符串,并且可以通过
返回一串空格的字符串函数。
SPACE(count)
{fn SPACE(count)}
count - 整数表达式,指定要返回的空格数。SPACE 返回一个空格字符串 count 个空格长。如果 是数字字符串、十进制数或混合数字字符串, 会将其解析为其整数部分。如果 是负数或非数字字符串将其解析为 。
要从字符串中删除空格,请使用 (前导空格)或 (尾随空格)。
注意:不应将 SPACE 函数与 归类类型混淆。 排序规则在一个值前面添加一个空格,强制将其作为字符串进行评估。为了建立 归类, 提供了一个 归类关键字,ObjectScript 提供了 类的 方法。
以下嵌入式 SQL 示例返回名称字段长度的空格字符串:
/// d ##class(PHA.TEST.SQLFunction).Space()
ClassMethod Space()
{
&sql(
SELECT SPACE(LENGTH(name))
INTO :a
FROM Sample.Person
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"Leave this much space:",a,"for names"
}
}
标量数值函数,返回角度的正弦值(以弧度为单位)。
{fn SIN(numeric-expression)}
numeric-expression - 数值表达式。这是一个以弧度表示的角度。SIN 返回 NUMERIC 或 数据类型。如果 是数据类型 ,则 返回 ;否则,它返回 。
接受任何数值并将其正弦作为浮点数返回。如果传递一个 值,SIN 返回 。 将非数字字符串视为数值 。
返回一个精度为 、小数位数为 18 的值。
只能用作 标量函数(使用大括号语法)。
可以使用 函数将弧度转换为度数。可以使用 函数将度数转换为弧度。
以下示例显示了 SIN 的效果:
SELECT {fn SIN(0.52)} AS Sine
0.496880137843736714
返回给定数值表达式符号的数值函数。
SIGN(numeric-expression)
{fn SIGN(numeric-expression)}
numeric-expression - 要为其返回符号的数字。SIGN 返回 SMALLINT 数据类型。
返回以下内容:
-1 如果 numeric-expression 小于零。numeric-expression 为零,则为 (零):0、 或 。 可用作 标量函数(使用花括号语法)或 SQL 通用函数。
在确定其值之前将数值表达式转换为规范形式。例如, 和 都返回 ,表示一个正数。
注意:两个负号(连字符)是内嵌注释指示符。因此,指定两个连续负号的 参数必须显示为用引号括起来的数字字符串。
以下示例显示了 的效果:
SELECT {fn SIGN(-0.0)} AS PosNeg
0
SELECT SIGN(-+-16.748) AS PosNeg
1
返回日期时间表达式的秒数的时间函数。
{fn SECOND(time-expression)}
time-expression - 作为列名、另一个标量函数的结果或字符串或数字文字的表达式。它必须解析为时间戳字符串或 $HOROLOG 字符串,其中基础数据类型可以表示为 %Time、 或 。SECOND 返回一个从 0 到 的整数,也可能返回小数秒。秒数是针对 或 值、 格式日期字符串(没有时间值)或时间戳计算的。
时间表达式时间戳可以是数据类型 (编码的 位有符号整数),也可以是数据类型 %Library.TimeStamp ()。
要更改默认时间格式,请使用 命令。
必须提供时间戳字符串 () 或 字符串。 $HOROLOG 字符串可以是完整的日期时间字符串 () 或只是 的时间整数部分。不能提供时间字符串 ();无论实际秒数如何,这始终返回 。
日期时间字符串的时间部分必须是有效时间。否则,将生成 错误 。秒 () 部分必须是 到 范围内的整数。前导零在输入时是可选的;前导零在输出上被抑制。
日期时间字符串的日期部分未经过验证。
当秒部分为或时, 返回 秒。如果提供了没有时间表达式的 ODBC 日期,或者完全省略了时间表达式的秒部分()。
可以使用 或 返回相同的时间信息。
也可以使用
从索引的 Find() 方法返回一组值的函数。
SEARCH_INDEX([[schema_name.]table-name.]index-name[,findparam[,...])
table-name - 可选 — 为其定义了 index-name 的现有表的名称。不能是一个视图。表的 schema_name 是可选的。如果省略,则搜索 子句中指定的所有表。findparam - 可选 — 要传递给索引的 方法的参数或逗号分隔的参数列表。调用 方法并返回一组值。可以选择将参数传递给此 方法。例如, 调用 方法。
可以与 子句中的 %FIND 谓词一起使用,以提供对象的 ,该对象提供封装一组值的抽象表示。这些值通常是查询运行时调用的方法返回的行 。 调用索引的 方法来返回这个 。此用法显示在以下示例中:
该索引必须在 语句引用的表中找到。如果 语句使用的表中不存在指定的索引名称,则会生成 SQLCODE -151 错误。如果指定的索引名不是完全限定的,则会生成 错误,因此在 语句使用的表中不明确(可能引用多个现有索引)。
如果索引存在,但没有对应的 方法,则生成运行时 错误,错误为 。
字符串函数,它返回一个删除了尾随空格的字符串。
RTRIM(string-expression)
{fn RTRIM(string-expression)}
string-expression - 字符串表达式,可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。RTRIM 从字符串表达式中去除尾随空格,并将字符串作为 VARCHAR 类型返回。如果 为 ,则 返回 。如果 是一个完全由空格组成的字符串,则 返回空字符串 ()。
无论要裁剪的输入表达式的数据类型是什么,总是返回数据类型。
RTRIM 留下前导空白;要删除前导空格,请使用 。要删除任何类型的前导和/或尾随字符,请使用 TRIM。要使用尾随空格或其他字符填充字符串,请使用 。要创建一串空白,请使用 。
请注意, 可用作 标量函数(使用大括号语法)或 SQL 通用函数。
以下嵌入式 SQL 示例从字符串中删除了五个尾随空格。它留下五个前导空白:
/// d ##class(PHA.TEST.SQLFunction).Rtrim()
ClassMethod Rtrim()
{
s a=" Test string with 5 leading and 5 trailing spaces. "
&sql(
SELECT {fn RTRIM(:a)} INTO :b
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"Before RTRIM",!,"start:",a,":end"
w !,"After RTRIM",!,"start:",b,":end"
}
}
字符串函数,它返回一个右填充到指定长度的字符串。
RPAD(string-expression,length[,padstring])
string-expression - 字符串表达式,可以是列名、字符串文字、主机变量或另一个标量函数的结果。可以是可转换为 VARCHAR 数据类型的任何数据类型。字符串表达式不能是流。length - 整数,指定返回的字符串中的字符数。padstring - 可选 — 由一个字符或一串字符组成的字符串,用于填充输入字符串表达式。 padstring 字符或字符附加到 string-expression 的右侧,以提供创建长度字符的输出字符串所需的尽可能多的字符。 可以是字符串文字、列、主机变量或另一个标量函数的结果。如果省略,则默认为空格字符。用尾随填充字符填充字符串表达式。它返回填充到长度字符数的字符串的副本。如果字符串表达式的长度超过 个字符,则返回字符串被截断为 个字符。
如果 为 ,则 RPAD 返回 。如果 为空字符串 () ,则 返回一个完全由填充字符组成的字符串。返回的字符串是 类型。
可用于针对链接表的查询。
不会删除前导或尾随空格;它填充字符串,包括任何前导或尾随空格。要在填充字符串之前删除前导或尾随空格,请使用 LTRIM、 或 。
以指定位数舍入或截断数字的数值函数。
ROUND(numeric-expr,scale[,flag])
{fn ROUND(numeric-expr,scale[,flag])}
numeric-expr - 要四舍五入的数字。一个数值表达式。scale - 计算结果为整数的表达式,该整数指定要舍入到的位数,从小数点开始计数。可以是零、正整数或负整数。如果 scale 是小数, 会将其四舍五入为最接近的整数。flag - 可选 — 一个布尔标志,指定是舍入还是截断 。默认值为 0。返回与 相同的数据类型。
此函数可用于将数字舍入或截断为指定的小数位数。
将 舍入或截断以缩放位置,从小数点开始计数。舍入时,数字 5 始终向上舍入。在 循环或截断操作后删除尾随零。不返回前导零。
请注意,
问题: 通过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 新密码;
标量字符串函数,它从字符串表达式的末尾(最右边的位置)返回指定数量的字符。
{fn RIGHT(string-expression,count)}
string-expression - 字符串表达式,可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。RIGHT 从字符串表达式的末尾(最右边的位置)返回 个字符。如果为任一参数传递 值, 将返回 。
只能用作 标量函数(使用大括号语法)。
以下示例返回 Sample.Person 表中每个名称最右边的两个字符:
SELECT Name,{fn RIGHT(Name,2)}AS MiddleInitial
FROM Sample.Person
以下嵌入式 SQL 示例显示 RIGHT 如何处理比字符串本身长的计数:
/// d ##class(PHA.TEST.SQLFunction).Right()
ClassMethod Right()
{
&sql(
SELECT Name,{fn RIGHT(Name,40)}
INTO :a,:b
FROM Sample.Person
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,a,"=original",!,b,"=RIGHT 40"
}
}
标量字符串函数,它以相反的字符顺序返回一个字符串。
REVERSE(string-expression)
string-expression - 要反转的字符串表达式。表达式可以是列名、字符串文字、数字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR)。REVERSE 返回字符顺序颠倒的字符串表达式。例如 'Hello World!' 返回为 '!dlroW olleH'。这是一个简单的字符串顺序反转,没有额外的处理。
返回的字符串是数据类型 VARCHAR,与输入值的数据类型无关。数字转换为规范形式,数字字符串在反转之前不会转换为规范形式。
前导和尾随空白不受反转的影响。
反转 值会导致 NULL。
注意:因为 REVERSE 总是返回一个 字符串,所以某些类型的数据在反转时会变得无效:
以下示例反转 字段值。在这种情况下,这会导致名称按中间名首字母排序:
SELECT Name,REVERSE(Name) AS RevName
FROM Sample.Person
ORDER BY RevName
将字符串重复指定次数的字符串函数。
REPLICATE(expression,repeat-count)
expression - 要重复的字符串表达式。repeat-count - 重复的次数,以整数表示。注意:REPLICATE 函数是 函数的别名。提供 REPLICATE 是为了与 兼容。有关详细信息,请参阅重复。