金仓数据库 KingbaseES参考手册-(8.函数(三))
8.51. BIT_AND
用法:
bit_and(expression)功能:
聚集函数,计算所有非空值按位与。如果没有非空值传入,返回空值。
例子:
CREATE TABLE tinyint_fun(a tinyint); INSERT INTO tinyint_fun values('55'); INSERT INTO tinyint_fun values('100'); SELECT bit_and(a) from tinyint_fun;
8.52. BIT_LENGTH
用法:
bit_length(string)功能:
返回
string
中的位数例子:
SELECT bit_length('jose');
8.53. BIT_OR
用法:
bit_or(expression)功能:
聚集函数,对输入的非空值按位或运算,如果没有输入非空值,则返回空值。
例子:
CREATE TABLE tinyint_fun(a tinyint); INSERT INTO tinyint_fun values('55'); INSERT INTO tinyint_fun values('100'); SELECT bit_or(a) from tinyint_fun;
8.54. BITAND
用法:
bitand(expr1, expr2)功能:
该BITAND函数将其输入和输出视为位向量;输出是AND输入的按位。expr1和的类型expr2是NUMBER,结果是类型NUMBER。如果任一参数BITAND为NULL,则结果为NULL。参数必须在 -(2 (n-1) ) .. ((2 (n-1) )-1) 范围内。如果参数超出此范围,则结果未定义。
结果分几个步骤计算。首先,每个参数 A 都被替换为 value SIGN(A)*FLOOR(ABS(A))。这种转换具有将每个参数截断为零的效果。接下来,每个参数 A(现在必须是整数值)被转换为 n 位二进制补码二进制整数值。使用按位运算组合这两个位值AND。最后,将得到的 n 位二进制补码值转换回NUMBER.
BITAND 函数的注意事项
BITAND定义的当前实现n= 128。
PL/SQL 支持重载,BITAND其中输入和结果的类型都为 all BINARY_INTEGER,并且n= 32。
例子:
以下示例AND对数字 6(二进制 1,1,0)和 3(二进制 0,1,1)执行操作:
SELECT BITAND(6,3);
8.55. BLOB_EXPORT
用法:
blob_export(blob ,string )
功能:
将
blob
大对象的内容导出到磁盘文件。例子:
将test_blob表的lob列导入到blob_out.data文件中。
SELECT blob_export(lob, 'blob_out.data') FROM test_blob;
8.56. BLOB_IMPORT
用法:
blob_import(string )
功能:
将指定文件
blob
大对象的形式导入到数据库。例子:
将blob_out.data文件导入到test_blob表的lob列中。
INSERT INTO test_blob VALUES (2, blob_import('./blob.data'));
8.57. BOOL_AND
用法:
bool_and(expression)
功能:
聚集函数,求逻辑与,如果所有输入值为真则结果为真,否则为假。
例子:
对表
table
的列boolcol所有值求逻辑与。SELECT bool_and(boolcol) FROM table;
8.58. BOOL_OR
用法:
bool_or(expression)
功能:
聚集函数,求逻辑或,如果有输入值为真则结果为真,否则为假。
例子:
对表
table
的列boolcol所有值求逻辑或。SELECT bool_or(boolcol) FROM table;
8.59. BOUND_BOX
用法:
bound_box(box, box)
功能:
几何函数,方框到外包框。
例子:
对表
table
的列boolcol所有值求逻辑或。SELECT bound_box(box '((0,0),(1,1))', box '((3,3),(4,4))');
8.60. BOX
用法:
box(circle) box(point) box(point, point) box(polygon)功能:
几何函数,根据参数不同。
circle 圆到方框
point 点到空方框
point,point 点到方框
polygon 多边形到方框
例子:
SELECT box(circle '((0,0),2.0)'); SELECT box(point '(0,0)'); SELECT box(point '(0,0)', point '(1,1)'); SELECT box(polygon '((0,0),(1,1),(2,0))');
8.61. BTRIM
用法:
btrim(string text [,characters text]) btrim(string bytea, bytes bytea)功能:
字符串函数,从
string
的开头或结尾删除最长的只包含characters
(默认是一个空格)的串。二进制串函数,从
string
的开头或结尾删除值出现在bytes
中字节组成的最长串。例子:
处理二进制串
SELECT btrim('\000trim\001'::bytea, '\000\001'::bytea);处理字符串
SELECT btrim('xyxtrimyyx', 'xyz');
8.62. CARDINALITY
用法:
cardinality(anyarray)
功能:
数组函数,返回数组中元素总数,如果数组为空则返回0。
例子:
SELECT cardinality( ARRAY[[1,2], [3,4]]);
8.63. CBRT
用法:
cbrt(dp)
功能:
数学函数,返回
dp
的立方根。例子:
求 27 的立方根
SELECT cbrt(27.0);
8.64. CEIL
用法:
ceil(n)功能:
数学函数 ,CEIL返回大于或等于n的最小整数。该数字n始终可以写为整数k和正分数的差f,使得 0 <= f< 1 和n= k- f。CEIL的值是整数k。因此,当且仅当的值恰好是一个整数 时,它的值CEIL就是它本身。此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。该函数返回与参数的数值数据类型相同的数据类型。
例子:
SELECT ceil(-42.8);
8.65. CEILING
用法:
ceiling({dp|numeric}) ceiling()功能:
数学函数 ,CEIL返回大于或等于dp的最小整数。
ceil
函数的别名。json函数 ,返回大于或等于 SQL/JSON 数字的最接近整数。
例子:
SELECT ceiling(-95.3); SELECT jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling()');
8.66. CENTER
用法:
center(object)功能:
几何函数 ,返回图形
object
的中心点。例子:
SELECT center(box '((0,0),(1,2))');
8.67. CHAR_LENGTH
用法:
char_length(string)功能:
字符串函数 ,返回字符串
string
的字符数。例子:
SELECT char_length('hello');
8.68. CHARACTER_LENGTH
用法:
character_length(string)功能:
字符串函数 ,返回字符串
string
的字符数,同char_length
。例子:
SELECT character_length('hello');
8.69. CHARINDEX
用法:
charindex(sub_str varchar, src_str varchar[, start_location int default 1])功能:
字符串函数 ,返回
sub_str
在src_str
中第一次出现的位置,从start_location
位置开始查找,start_location
小于等于 0 或者为空时默认为 1。不存在则返回 0。例子:
SELECT charindex('bar', 'foobarbar', 5);
8.70. CHR
用法:
chr(int)功能:
字符串函数,返回给定代码的字符。对于 UTF8 该参数被视作一个 Unicode 代码点。对于其他多字节编码该参数必须指定一个 ASCII 字符。 NULL (0)字符不被允许, 因为文本数据类型不能 存储这种字节。
例子:
SELECT chr(65);
8.71. CIRCLE
用法:
circle(box) circle(point ,double precision) circle(polygon)功能:
几何类型转换函数,将输入图形转换到圆形。
例子:
方框到圆
SELECT circle(box '((0,0),(1,1))');中心和半径到圆
SELECT circle(point'(0,0)', 2.0);多边形到圆
SELECT circle(polygon '((0,0),(1,1),(2,0))');
8.72. CLOB_EXPORT
用法:
clob_export(clob, string, encode)功能:
将
clob
大对象的内容导出到文件。string
指定导出的文件路径,encode
指定编码格式,可以为空。例子:
SELECT clob_export (lob, 'clob_asc_out.data','sqlascii') FROM test_clob;
8.73. CLOB_IMPORT
用法:
clob_import(string, encode)功能:
将
clob
大对象的内容从文件导入到数据库。string
指定导出的文件路径,encode
指定编码格式,可以为空。例子:
SELECT clob_import ('clob_asc_out.data','sqlascii') FROM dual;
8.74. CLOCK_TIMESTAMP
用法:
clock_timestamp()功能:
日期/时间函数,返回当前日期和时间(在语句执行期间变化)。
例子:
SELECT clock_timestamp();
8.75. COALESCE
用法:
COALESCE(value [, ...])功能:
COALESCE
函数返回它的第一个非空参数的值。当且仅当所有参数都为空时才会返回空。它常用于在为显示目的检索数据时用缺省值替换空值。如果
description
不为空,这将会返回它的值,否则如果short_description
非空则返回short_description
的值,如果前两个都为空则返回(none)
。 和CASE
表达式一样,COALESCE
将不会 计算无助于判断结果的参数;也就是说,在第一个非空参数右边的参数不会被计算。这个 SQL标准函数提供了类似于NVL
和IFNULL
的能力,它们被用在某些其他数据库系统中。例子:
以下示例使用示例oe.product_information表来组织产品清仓销售。它为所有标价的产品提供 10% 的折扣。如果没有标价,则销售价格为最低价格。如果没有最低价格,则销售价格为“5”:
SELECT product_id, list_price, min_price, COALESCE(0.9*list_price, min_price, 5) "Sale" FROM product_information WHERE supplier_id = 102050 ORDER BY product_id;
8.76. COL_DESCRIPTION
用法:
col_description(table_oid, column_number)功能:
col_description
为一个表列返回注释,该表列由所在表的 OID 和它的列号指定(obj_description
不能被用在表列,因为表列没有自己的 OID)。例子:
CREATE TABLE comment_test ( id int, positive_col int CHECK (positive_col > 0), indexed_col int, CONSTRAINT comment_test_pk PRIMARY KEY (id)); COMMENT ON COLUMN comment_test.id IS 'Column ''id'' on comment_test'; SELECT col_description('comment_test'::regclass, 1) as comment;
8.77. CONCAT
用法:
concat(str ”any” [, str ”any” [, ...] ])
功能:
字符串函数,串接所有参数的文本表示。 NULL 参数被忽略.
例子:
此示例使用嵌套连接三个字符串:
SELECT concat('abcde',2, NULL, 22);
8.78. CONCAT_WS
用法:
concat_ws(sep text,str ” any” [,str ” any” [, ...]])功能:
字符串函数,将除了第一个参数
seq
外的其他参数用分隔符串接在一起。第一个参数被用作分隔符字符串。NULL 参数被忽略。例子:
此示例使用分隔符连接三个字符串:
SELECT concat_ws(',','abcde', 2,NULL, 22);
8.79. CONNECTIONS
用法:
connections()功能:
返回数据库服务器当前的用户连接数。
例子:
SELECT connections();
8.80. CONTAINS
用法:
contains(expr text,expr2 text [,expr3 varchar])功能:
字符串函数,依据参数expr3 所给出的全文检索的配置信息,以参数 expr2 为查询条件在参数 expr1 中进行 匹 配 查 找,如果找到则返回 true,否则返回 false。
例子:
SELECT CONTAINS('test of contains','contain');
8.81. CONVERT
用法:
convert(string bytea,src_encoding name,dest_encoding name)
功能:
字符串函数,将字符串转换为dest_encoding。原始编码由src_encoding指定。 string在这个编 码中必须可用。转换可以使用 CREATECONVERSION 定义。也有一些预定义的转换。
例子:
用Latin-1 encoding (ISO 8859-1) 表示的 text_in_utf8
SELECT convert('text_in_utf8','UTF8','LATIN1');
8.82. CONVERT_FROM
用法:
convert_from(string bytea, src_encoding name)功能:
字符串函数,将字符串转换为数据库编码。 原始编码 由src_encoding指定。 string在这个编码中必须可用。
例子:
用当前数据库编码表示的text_in_utf8
SELECT convert_from(’text_in_utf8’,’UTF8’);
8.83. CONVERT_TO
用法:
convert_to(string text,dest_encoding name)功能:
字符串函数,将字符串
string
转换为dest_encoding
指定的编码格式。例子:
用 UTF8 编码表达的 sometext .. code:
SELECT convert_to(’some text’, ’UTF8’);
8.84. CORR
用法:
corr(y,x)
功能:
CORR返回一组数字对的相关系数。您可以将其用作聚合或分析函数。
此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。
例子:
CREATE TABLE aggtest ( a int2, b float4 ); SELECT corr(b, a) FROM aggtest;
8.85. COS
用法:
cos(n)功能:
三角函数,COS返回n的余弦(以弧度表示的角度)。
此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。
例子:
以下示例返回 180 度的余弦:
SELECT COS(180 * 3.14159265359/180) ;
8.86. COSH
用法:
cosh(n)功能:
三角函数,COSH返回n的双曲余弦。
此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。
例子:
以下示例返回零的双曲余弦:
..code:
SELECT COSH(0) ;
8.87. COT
用法:
cot(n)功能:
三角函数,COSH返回n的余切。n以弧度表示。
例子:
..code:
SELECT cot(1::tinyint);
8.88. COUNT
用法:
count(expr)功能:
count 返回查询返回的行数。您可以将其用作聚合或分析函数。
如果指定expr,则返回不为空COUNT的行数。您可以计算expr所有行,也可以只计算expr的不同值。
如果您指定星号 (*),则此函数返回所有行,包括重复行和空行。COUNT从不返回 null。
例子:
聚合示例
以下示例COUNT用作聚合函数:
SELECT count(*) "Total" FROM students;
分析示例
下面的示例为employees表中的每个员工计算在低于员工工资 50 到高于员工工资 150 范围内获得工资的员工的移动计数。
SELECT last_name, salary, COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS mov_count FROM employees ORDER BY salary, last_name;
8.89. COVAR_POP
用法:
covar_pop(Y, X)功能:
covar_pop返回一组数字对的总体协方差。您可以将其用作聚集或分析函数。
此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。
例子:
CREATE TABLE aggtest ( a int2, b float4 ); SELECT covar_pop(b, a) FROM aggtest;
8.90. COVAR_SAMP
用法:
covar_samp(Y, X)功能:
COVAR_SAMP返回一组数字对的样本协方差。您可以将其用作聚合或分析函数。
此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。KingBase确定具有最高数值优先级的参数,将其余参数隐式转换为该数据类型,并返回该数据类型。
(SUM(expr1 * expr2) - SUM(expr1) * SUM(expr2) / n) / (n-1)
其中n是 ( expr1, expr2) 对的数量,其中既不为空expr1也不expr2为空。
该函数返回一个类型的值NUMBER。如果函数应用于空集,则返回 null。
例子:
CREATE TABLE aggtest ( a int2, b float4 ); SELECT covar_samp(b, a) FROM aggtest;
8.91. CUME_DIST
用法:
cume_dist() cume_dist(args)功能:
CUME_DIST计算一组值中某个值的累积分布。返回值的范围CUME_DIST是 >0 到 <=1。领带值始终评估为相同的累积分布值。
此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。KingBase数据库确定具有最高数值优先级的参数,将剩余参数隐式转换为该数据类型,进行计算并返回NUMBER。
作为聚合函数,对于由函数的参数和相应的排序规范标识CUME_DIST的假设行,计算行在聚合组中的行之间的相对位置。KingBase进行此计算,就好像假设行被插入到要聚合的行组中一样。该函数的参数标识每个聚合组中的单个假设行。因此,它们必须全部计算为每个聚合组中的常量表达式。常量参数表达式和聚合子句中的表达式按位置匹配。因此,参数的数量必须相同,并且它们的类型必须兼容。
作为分析函数,CUME_DIST计算一组值中指定值的相对位置。对于 row r,假设升序排列,CUME_DISTofr是值小于或等于行数r除以正在评估的行数的值(整个查询结果集或分区)。
例子:
聚合示例
下面的例子计算了一个假设雇员在样本表中的雇员中的累积分布,该雇员的薪水为 $15,500,佣金率为 5% oe.employees:
SELECT CUME_DIST(15500, .05) WITHIN GROUP (ORDER BY salary, commission_pct) "Cume-Dist of 15500" FROM employees;
分析示例
以下示例计算采购部门中每个员工的工资百分比。例如,40% 的文员工资低于或等于冰室。
SELECT job_id, last_name, salary, CUME_DIST() OVER (PARTITION BY job_id ORDER BY salary) AS cume_dist FROM employees WHERE job_id LIKE 'PU%' ORDER BY job_id, last_name, salary, cume_dist;
8.92. CURRENT_DATABASE
用法:
current_database()功能:
会话信息函数,返回当前数据库名。
例子:
SELECT current_database();
8.93. CURRENT_DATE
用法:
current_date()功能:
current_date以数据类型的公历中的值返回会话时区中的当前日期DATE。
例子:
SELECT current_date();
8.94. CURRENT_QUERY
用法:
current_query()功能:
当前正在执行的查询的文本,和客户端提交的一样(可能包含多于一个语句).
例子:
SELECT current_query();
8.95. CURRENT_SCHEMA
用法:
current_schema()功能:
返回当前模式名 。
例子:
SELECT current_schema();
8.96. CURRENT_SCHEMAS
用法:
current_schemas(boolean)功能:
返回搜索路径中的模式名,
boolean
参数指定是否包含隐含模式。例子:
SELECT current_schemas(true);
8.97. CURRENT_SETTING
用法:
current_setting(setting_name [, missing_ok])功能:
配置设定函数,获得设置的当前值。 current_setting`得到``setting_name``设置的当前值。它对应于SQL命令
SHOW
。 如果没有名为``setting_name``的设置,除非提供``missing_ok``并且其值为true
,current_setting
会抛出错误。例子:
SELECT current_setting('datestyle');
8.98. CURRENT_TIME
用法:
current_time(precision)功能:
根据
precision
指定的精度参数,返回带有时区的时间。例子:
SELECT current_time(8);
8.99. CURRENT_TIMESTAMP
用法:
current_timestamp(precision)功能:
CURRENT_TIMESTAMP以数据类型的值返回会话时区中的当前日期和时间TIMESTAMP WITH TIME ZONE。时区偏移反映了 SQL 会话的当前本地时间。如果省略precision,则默认值为6。此函数与返回值的区别在于LOCALTIMESTAMP返回值。 CURRENT_TIMESTAMPTIMESTAMP WITH TIME ZONELOCALTIMESTAMPTIMESTAMP在可选参数中,precision指定返回的时间值的小数秒精度。
例子:
SELECT current_timestamp(8);
8.100. CURRVAL
用法:
currval(regclass)功能:
序列操作函数,返回最近一次用
nextval
获取的指定序列的值 。例子:
CREATE TEMP SEQUENCE testseq; SELECT nextval('testseq'); SELECT currval('testseq'); SELECT nextval('testseq'); SELECT currval('testseq');
8.101. CURSOR_TO_XML
用法:
cursor_to_xml(cursor refcursor, count int, nulls boolean,tableforest boolean, targetns text)功能:
XML操作函数,把关系表的内容映射成 XML 值。它们可以被看成是 XML 导出功能
例子:
CREATE TABLE xmltbl (a int, b text); INSERT INTO xmltbl VALUES (1, 'one'), (2, 'two'), (-1, null); DECLARE xc CURSOR WITH HOLD FOR SELECT * FROM xmltbl ORDER BY 1, 2; SELECT cursor_to_xml('xc'::refcursor, 5, false, true, '');