Sybase IQ常用函数大全–杂项函数
查询索引:
- COALESCE 函数:返回列表中的第一个非 NULL 表达式。
- IFNULL 函数:返回第一个非空值表达式或 NULL。
- ISNULL 函数:返回参数列表中的第一个非 NULL 表达式的值。必须向此函数至少传递两个表达式。ISNULL 函数与 COALESCE 函数相同。
- ISNUMERIC 函数:测试字符串参数是否可以转换为数字。如果可以进行转换,则此函数返回 1;否则返回 0。如果参数为 NULL,则返回 0。
- NEWID 函数:生成 UUID(通用唯一标识符)值。返回的 UUID 值为二进制值。UUID 与 GUID(全局唯一标识符)相同。详情略。
- NUMBER 函数:为查询结果中的每个连续行生成从 1 开始的编号。
- ROWID 函数:返回表的每一行的内部行 ID 值。
1. COALESCE 函数
返回列表中的第一个非 NULL 表达式。
语法:
COALESCE ( <expression>, <expression> [ , … ] )
解析:
参数 | 说明 |
---|---|
表达式 | 任意表达式 |
示例:
-- 以下语句返回值 34:
SELECT COALESCE( NULL, 34, 13, 0 ) FROM iq_dummy
2. IFNULL 函数
返回第一个非空值表达式或 NULL。如果第一个表达式为 NULL 值,则返回第二个表达式的值。如果第一个表达式不为 NULL,则返回第三个表达式的值。如果第一个表达式不是 NULL,并且没有第三个表达式,则返回 NULL 值。
语法:
IFNULL ( <expression1>, <expression2> [ , <expression3> ] )
解析:
参数 | 说明 |
---|---|
expression1 | 要计算的表达式。它的值决定是返回 还是 。 |
expression2 | 当 为 NULL 时的返回值。 |
expression3 | 当 不为 NULL 时的返回值。 |
示例:
-- 以下语句返回值 -66:
SELECT IFNULL( NULL, -66 ) FROM iq_dummy
-- 下面的语句将返回 NULL,这是因为第一个表达式不为 NULL,并且没有第三个表达式:
SELECT IFNULL( -66, -66 ) FROM iq_dummy
3. ISNULL 函数
返回参数列表中的第一个非 NULL 表达式的值。必须向此函数至少传递两个表达式。
语法:
ISNULL ( <expression>, <expression> [ …, <expression> ] )
解析:
参数 | 说明 |
---|---|
表达式 | 要测试是否为 NULL 的表达式。 |
- ISNULL 函数与 COALESCE 函数相同。
示例:
以下语句返回值 -66:
SELECT ISNULL( NULL ,-66, 55, 45, NULL, 16 ) FROM iq_dummy相关信息第 287 页上的“COALESCE 函数 [杂项]”6.11.90 ISNUMERIC 函数 [杂项]测试字符串参数是否可以转换为数字。如果可以进行转换,则此函数返回 1;否则返回 0。如果参数为 NULL,则返回 0。语法ISNUMERIC ( <string> )参数参数
4. ISNUMERIC 函数
测试字符串参数是否可以转换为数字。如果可以进行转换,则此函数返回 1;否则返回 0。如果参数为 NULL,则返回 0。
语法:
ISNUMERIC ( <string> )
解析:
参数 | 说明 |
---|---|
string | 要分析的字符串(分析目的是确定该字符串是否代表有效的数值)。 |
示例:
-- 以下示例测试 height_in_cms 列中是否保存有效的数值数据,它以 NULL 的形式返回无效的数值数据,并以 int 格式返回有效的数值数据。
select case
when isnumeric(height_in_cms)=0
then NULL
else cast(height_in_cms as int)
end
from MyData
5. 略
6. NUMBER 函数
为查询结果中的每个连续行生成从 1 开始的编号。
语法:
NUMBER ( * )
解析:
- 仅在选择列表中或 NUMBER 语句的 SET 子句中使用 UPDATE 函数。例如,以下语句使用比前一行大 1 的数字来更新 seq_id 列中的每一行。该数字的应用顺序由 ORDER BY 子句指定。
- 在 UPDATE 语句中,如果 NUMBER() 函数用在 SET 子句中,并且 FROM 子句指定一对多连接,则 NUMBER() 会生成唯一的数字,这些数字会增加,但由于删除行,可能不会按顺序递增。
示例:
SELECT NUMBER( * )
FROM Departments
WHERE DepartmentID > 10
7. ROWID 函数
返回表的每一行的内部行 ID 值。
语法:
ROWID ( <table-name> ) …FROM <table-name>
解析:
参数 | 说明 |
---|---|
table-name | 表的名称。在括号内指定不带引号或带双引号的表名。 |
- 您可以结合使用 ROWID 函数与其它子句来操作表的特定行。
- 必须指定 FROM 子句。
示例:
-- 以下语句返回行 ID 值 1 到 10:
SELECT ROWID( “PRODUCTS” ) FROM PRODUCTS
-- 以下语句返回产品 ID 值小于 400 的所有行的产品 ID 和行 ID 值:
SELECT PRODUCTS.ID, ROWID ( PRODUCTS )
FROM PRODUCTS
WHERE PRODUCTS.ID < 400
结果:
ID | rowid(Products) |
---|---|
300 | 1 |
301 | 2 |
302 | 3 |