文章目录


​第二十六章 SQL函数 CHARACTER_LENGTH​​​​大纲​​​​参数​​​​描述​​​​示例​


第二十六章 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

第二十六章 SQL函数 CHARACTER_LENGTH_字段

注意:​​CHARACTER_LENGTH​​、​​CHAR_LENGTH​​和​​DATALENGTH​​函数是相同的。

它们都接受一个流字段参数。

​LENGTH​​和​​$LENGTH​​函数不接受流字段参数。

​LENGTH​​与这些函数的不同之处在于,在计算字符之前会去掉尾随空格和字符串终止字符。
​$LENGTH​​也不同于这些函数,因为如果传入一个​​NULL​​值,它返回​​0​​,如果传入一个空字符串,则返回​​0​​。

示例

下面的示例返回​​Sample​​中状态缩写字段(​​Home_State​​)中的字符数。

员工表。

(美国各州都有两个字母的邮政缩写):

SELECT DISTINCT CHARACTER_LENGTH(Home_State) AS StateLength
FROM Sample.Employee

第二十六章 SQL函数 CHARACTER_LENGTH_字段_02

下面的例子返回员工的名字和每个员工名字中的字符数,按字符数升序排列:

SELECT Name,
CHARACTER_LENGTH(Name) AS NameLength
FROM Sample.Employee
ORDER BY NameLength

第二十六章 SQL函数 CHARACTER_LENGTH_sql_03

以下示例返回​​Sample.Employee​​​表中的字符流字段(​​Notes​​​)和二进制流字段(​​Picture​​)中的字符数:

SELECT DISTINCT CHARACTER_LENGTH(Notes) AS NoteLen
FROM Sample.Employee WHERE Notes IS NOT NULL
SELECT DISTINCT CHARACTER_LENGTH(Picture) AS PicLen
FROM Sample.Employee WHERE Picture IS NOT NULL

下面的嵌入式SQL示例演示了​​CHARACTER_LENGTH​​​如何处理​​Unicode​​​字符。​​CHARACTER_LENGTH​​计算字符数,而不考虑其字节长度:

ClassMethod CHARACTERLENGTH()
{
SET a=$CHAR(960)_"FACE"
WRITE !,a
&sql(SELECT CHARACTER_LENGTH(:a) INTO :b)
IF SQLCODE'=0 {WRITE !,"Error code ",SQLCODE }
ELSE {WRITE !,"The CHARACTER length is ",b }
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).CHARACTERLENGTH()

πFACE
The CHARACTER length is 5