第七十八章 SQL函数 $LENGTH
文章目录
第七十八章 SQL函数 $LENGTH
返回字符串中字符数或分隔子字符串数的字符串函数。
大纲
$LENGTH(expression[,delimiter])
参数
expression
- 目标字符串。它可以是数值、字符串文字、任何变量的名称或任何有效的表达式。delimiter
- 可选 — 在目标字符串中划分不同子字符串的字符串。它必须是字符串文字,但可以是任意长度。括起来的引号是必需的。
$LENGTH
返回 SMALLINT
数据类型。
描述
$LENGTH
返回指定字符串中的字符数或指定字符串中的子字符串数,具体取决于使用的参数。
$LENGTH(expression)
返回字符串中的字符数。如果表达式为空字符串 (''
),则$LENGTH
返回0
。如果表达式为NULL
,则$LENGTH
返回0
。$LENGTH(expression,delimiter)
返回字符串中子字符串的数量。$LENGTH
返回由指定分隔符相互分隔的子字符串的数量。此数字始终等于在表达式字符串中找到的分隔符实例的数量加一。
$LENGTH(expression) 和其他长度函数
$LENGTH(expression)
和其他长度函数(LENGTH
、CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
)都执行以下操作:
$LENGTH
返回字段的逻辑(内部数据存储)值的长度,而不是显示值,无论SelectMode
设置如何。所有 SQL 函数始终使用字段的内部存储值。$LENGTH
返回数字的规范形式的长度。规范形式的数字不包括前导零和尾随零、前导符号(单个减号除外)和尾随小数分隔符。$LENGTH
返回数字字符串的字符串长度。数字字符串不会转换为规范形式。$LENGTH
不排除字符串中的前导空格。可以使用LTRIM
函数从字符串中删除前导空格。
在执行以下操作时,$LENGTH
与其他长度函数(LENGTH
、CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
)不同:
$LENGTH
不排除尾随空格和终止符。CHARACTER_LENGTH
、CHAR_LENGTH
和DATALENGTH
也不排除尾随空格和终止符。LENGTH
不包括尾随空格和字符串终止字符。- 如果传递一个
NULL
值,则$LENGTH
返回0
,如果传递一个空字符串,则返回0
。如果传递NULL
值,则LENGTH
、CHARACTER_LENGTH
、CHAR_LENGTH
和DATALENGTH
返回NULL
,如果传递空字符串,则返回0
。 $LENGTH
不支持数据流字段。为字符串表达式指定流字段会导致SQLCODE -37
。LENGTH
也不支持流字段。CHARACTER_LENGTH
、CHAR_LENGTH
和DATALENGTH
函数确实支持数据流字段。$LENGTH
返回数据类型SMALLINT
。所有其他长度函数都返回数据类型INTEGER
。
NULL 和空字符串参数
$LENGTH(expression)
不区分空字符串 (''
) 和 NULL
(缺少值)。它为空字符串 (''
) 值和 NULL
返回长度 0
。
如果没有匹配,带有非空分隔符的 $LENGTH(expression,delimiter)
将返回 1
的分隔子字符串计数。完整字符串是不包含分隔符的单个子字符串。即使表达式为空字符串 (''
) 或表达式为 NULL
,也是如此。但是,空字符串会匹配自身,返回值 2
。
下表显示了字符串(‘abc’
)、空字符串(‘’
)或NULL
表达式值与不匹配的字符串(‘^’
)、空字符串(‘’
)或NULL
分隔符值的可能组合:
$LENGTH(NULL) = 0 | $LENGTH('') = 0 | $LENGTH('abc') = 3 |
$LENGTH(NULL,NULL) = 0 | $LENGTH('',NULL) = 0 | $LENGTH(’abc‘,NULL) = 0 |
$LENGTH(NULL,'') = 1 | $LENGTH('','') = 2 | $LENGTH(’abc‘,'') = 1 |
$LENGTH(NULL,'^') = 1 | $LENGTH(’‘,'^') = 1 | $LENGTH('abc','^') = 1 |
示例
以下示例返回 6
,即字符串的长度:
SELECT $LENGTH('ABCDEG') AS StringLength
6
以下示例返回 3
,即字符串中的子字符串数,由美元符号 ($
) 字符分隔。
SELECT $LENGTH('ABC$DEF$EFG','$') AS SubStrings
3
如果在字符串 $LENGTH
中找不到指定的分隔符,则返回 1
,因为唯一的子字符串是字符串本身:
SELECT $LENGTH('ABCDEG','$') AS SubStrings
1
在下面的嵌入式 SQL 示例中,第一个 $LENGTH
函数返回 11
,即 a
中的字符数(当然包括空格字符)。第二个 $LENGTH
函数返回 2
,即 a
中使用 b
(空格字符)作为子字符串分隔符的子字符串数。
/// d ##class(PHA.TEST.SQLCommand).Length1()
ClassMethod Length1()
{
s a = "HELLO WORLD"
s b = " "
&sql(
SELECT
$LENGTH(:a),
$LENGTH(:a,:b)
INTO :a1,:a2
)
if SQLCODE '= 0 {
w !,"Error code ",SQLCODE
} else {
w !,"The input string: ",a
w !,"Number of characters: ",a1
w !,"Number of substrings: ",a2 }
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Length1()
The input string: HELLO WORLD
Number of characters: 11
Number of substrings: 2
以下示例返回 0
,因为测试的字符串是空字符串:
SELECT $LENGTH(NULL) AS StringLength
0
以下示例返回 1
,因为指定了分隔符但未找到。有一个子字符串,即空字符串:
SELECT $LENGTH(NULL,'$') AS SubStrings
1
以下示例返回 0
,因为分隔符是空字符串:
SELECT $LENGTH('ABCDEFG',NULL) AS SubStrings
0
注意
L E N G T H 、 LENGTH、 LENGTH、PIECE 和 $LIST
- 带有一个参数的
$LENGTH
返回字符串中的字符数。此函数可与$EXTRACT
函数一起使用,该函数按位置定位子字符串并返回子字符串值。 - 带有两个参数的
$LENGTH
根据分隔符返回字符串中子字符串的数量。此函数可与$PIECE
函数一起使用,该函数通过分隔符定位子字符串并返回子字符串值。 $LENGTH
不应用于使用$LISTBUILD
或$LIST
创建的编码列表。使用$LISTLENGTH
确定编码列表字符串中的子字符串(列表元素)的数量。
$LENGTH
、$FIND
、$EXTRACT
和 $PIECE
函数对标准字符串进行操作。各种 $LIST
函数对与标准字符串不兼容的编码字符串进行操作。唯一的例外是 $LISTGET
函数和 $LIST
的单参数和双参数形式,它们将编码字符串作为输入,但将单个元素值作为标准字符串输出。
相关文章
- 【SQL 学习】分析函数之RANK() DENSE_RANK ()
- SQL SERVER如何通过SQL语句获服务器硬件和系统信息
- Serverless 解惑——函数计算如何访问 SQL Server 数据库
- SQL中的函数 •Aggregate 函数 •Scalar 函数
- 【学习总结】SQL的学习-2-sql操作
- go的sql包
- pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
- Deepin 20.2.1 安装 MS SQL 2019 容器版本
- Sql Server REPLACE函数
- php自带的几个防止sql注入的函数
- SQL Server DATEADD() 函数
- SQL SERVER CHARINDEX函数
- 对于PowerDesigner中设计表自动生成Sql的分析
- Atitit 获取一列拼接为字符串 逗号分隔 目录1.1. Sql Group_contackt,但是排序只能拍一个的。。如果多个列对应排序则不行。。。 11.2. Js 使用map函数 1
- Atitit 数据join 的原理与java实现 Atitit join表连接的原理与实现 13、SQL Server 表连接的三种方式 (1) Merge Join (2) Nested
- Atitit sql之道 艾龙著 attilax 1. Ddl dml3 2. Crud3 3. 高级sql3 3.1. Merge3 3.2. 数据库翻页 limit offset系列
- SQL DXP 6.6.x 高级版--最新版
- Database之SQL:SQL在线编程、工作中常用SQL代码实践(以语法为导向的增、删、改、查,已基本涵盖所有语法案例)之详细攻略
- 解密 Oracle 数据库 SQL 执行历史:掌握多种实现方式,轻松实现 SQL 监控与性能优化
- SQL基础【十八、事物】(sql事物慎用,还是写业务逻辑代码好一些,入伙涉及到更换数据啥的很麻烦!)
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
- Python编程:peewee执行多条原生sql语句
- Node.js:insert-sql帮助开发者生成SQL插入语句
- 009-Hadoop Hive sql语法详解4-DQL 操作:数据查询SQL-select、join、union、udtf
- SQL Server 中WITH (NOLOCK)浅析
- SQL——Sql_Server中如何判断表中某字段、判断表、判断存储过程以及判断函数是否存在
- SQL MAX() 函数
- [转]MS SQL Server 数据库连接字符串详解
- SQL Server字符串函数