第七十七章 SQL函数 LENGTH
第七十七章 SQL函数 LENGTH
返回字符串表达式中字符数的字符串函数。
大纲
LENGTH(string-expression)
{fn LENGTH(string-expression)}
参数
string-expression
- 字符串表达式,可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如CHAR
或VARCHAR
)。
LENGTH
返回 INTEGER
数据类型。
描述
LENGTH
返回一个整数,表示给定字符串表达式的字符数,而不是字节数。字符串表达式可以是字符串(从中删除尾随空格)或数字( IRIS 将其转换为规范形式)。
请注意,LENGTH
可用作 ODBC 标量函数(使用花括号语法)或 SQL 通用函数。
LENGTH
和其他长度函数($LENGTH
、CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
)都执行以下操作:
LENGTH
返回字段的逻辑(内部数据存储)值的长度,而不是显示值,无论SelectMode
设置如何。所有 SQL 函数始终使用字段的内部存储值。LENGTH
返回数字的规范形式的长度。规范形式的数字不包括前导零和尾随零、前导符号(单个减号除外)和尾随小数分隔符。LENGTH
返回数字字符串的字符串长度。数字字符串不会转换为规范形式。LENGTH
不排除字符串中的前导空格。可以使用LTRIM
函数从字符串中删除前导空格。
在执行以下操作时,LENGTH
与其他长度函数($LENGTH
、CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
)不同:
LENGTH
不包括尾随空格和字符串终止字符。
$LENGTH
、CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
不排除尾随空格和终止符。
- 如果传递一个
NULL
值,LENGTH
返回NULL
,如果传递一个空字符串,则返回0
。
如果传递 NULL
值,CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
也返回 NULL
,如果传递空字符串,则返回 0
。如果传递一个 NULL
值,则 $LENGTH
返回 0
,如果传递一个空字符串,则返回 0
。
LENGTH
不支持数据流字段。为字符串表达式指定流字段会导致SQLCODE -37
。
$LENGTH
也不支持流字段。 CHARACTER_LENGTH
、CHAR_LENGTH
和 DATALENGTH
函数确实支持数据流字段。
示例
在以下示例中, IRIS 首先将每个数字转换为规范形式(删除前导零和尾随零,解析前导符号,并删除尾随小数分隔符)。每个 LENGTH
返回长度为 1
:
SELECT {fn LENGTH(7.00)} AS CharCount,
{fn LENGTH(+007)} AS CharCount,
{fn LENGTH(007.)} AS CharCount,
{fn LENGTH(00000.00)} AS CharCount,
{fn LENGTH(-0)} AS CharCount
1 1 1 1 1
在以下示例中,第一个 LENGTH
删除前导零,返回长度值 2
;第二个 LENGTH
将数值视为字符串,并且不删除前导零,返回长度值 3
:
SELECT LENGTH(0.7) AS CharCount,
LENGTH('0.7') AS CharCount
2 3
以下示例返回值 12
:
SELECT LENGTH('INTERSYSTEMS') AS CharCount
12
以下示例显示了 LENGTH
如何处理前导和尾随空格。第一个 LENGTH
返回 15
,因为 LENGTH
不包括尾随空格,但不包括前导空格。第二个 LENGTH
返回 12
,因为 LTRIM
排除了前导空格:
SELECT LENGTH(' INTERSYSTEMS ') AS CharCount,
LENGTH(LTRIM(' INTERSYSTEMS ')) AS CharCount
15 12
以下示例返回 Sample.Person
表中每个 Name
值中的字符数:
SELECT Name,{fn LENGTH(Name)} AS CharCount
FROM Sample.Person
ORDER BY CharCount
以下示例返回 DOB
(出生日期)字段中的字符数。请注意,返回的长度(由 LENGTH
、CHAR_LENGTH
和 CHARACTER_LENGTH
)是日期的内部 ($HOROLOG
) 格式,而不是显示格式。 DOB
的显示长度为十个字符;所有三个长度函数都返回 5 的内部长度:
SELECT DOB,{fn LENGTH(DOB)} AS LenCount,
CHAR_LENGTH(DOB) AS CCount,
CHARACTER_LENGTH(DOB) AS CtrCount
FROM Sample.Person
以下嵌入式 SQL 示例给出了 Unicode
字符字符串的长度。返回的长度是字符数 (7),而不是字节数。
/// d ##class(PHA.TEST.SQLCommand).Length()
ClassMethod Length()
{
s a = $CHAR(920,913,923,913,931,931,913)
&sql(SELECT LENGTH(:a) INTO :b )
if SQLCODE'=0 {
w !,"Error code ",SQLCODE
} else {
w !,"The Greek Sea: ",a,!,$LENGTH(a),!,b
}
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).Length()
The Greek Sea: ΘΑΛΑΣΣΑ
7
7
相关文章
- SQL NOW() 函数
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
- sql 批量修改,Update Select 嵌套更新或批量更新一句SQL语句搞定,
- 第160章 SQL函数 XMLFOREST
- 第143章 SQL函数 TO_DATE(一)
- 第124章 SQL函数 SECOND
- 第九十四章 SQL函数 %MINUS
- 第七十九章 SQL函数 $LIST(一)
- 第十五章 SQL窗口函数概述(二)
- 第八章 SQL聚合函数 MAX
- 管好统计信息,开启SQL优化之门
- 玩转SQL窗口函数
- sql 关联查询——字符数组id一一对应id(FIND_IN_SET函数和substring函数的使用)
- Drupal如何SQL查询传递参数?
- 《SQL初学者指南(第2版)》——2.3 注释
- 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.3 窗口函数中的元素
- PL/SQL DEVELOPER 导出表数 和 生成 执行快速 插入表的 sql
- 浅析SQL中 in 与 exists 用法的区别及其各自执行流程、not in/not exists区别、sql优化应该如何选择in还是exists
- Sql Server数据批量更新
- 速围观!慢SQL数据库挑战赛PK大师0.00sec赢千元机械键盘
- Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)(转载)
- java.sql.SQLException: Invalid parameter object type. Expected 'java.util.Map' but found 'java.lang.String 转载
- SQL Server DATEADD() 函数
- SQL Server查询事务