sql 函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 函数相关的知识,希望对你有一定的参考价值。
函数定义如下:
create or replace function sf_get_circuit_width(circuit_id char)
return char is
circuit_width char(1000);
begin
select total_width into circuit_width from
(
select c.circuit_no,sum(band_width) as total_width from
(
--速率为空,replace函数返回空
select x.circuit_no,cast(replace(x.band_width,'M','000000') as integer) as band_width from (
select b.circuit_no,REPLACE(sf_get_desc_china(b.circuit_rate),'K','000') as band_width
from pub_log_circuit b
where b.circuit_id in
(select a.opr_id from pub_opr_route a where a.res_id=circuit_id)
) x
) c
group by rollup(c.circuit_no)
) d where d.circuit_no is null;
EXCEPTION
WHEN NO_DATA_FOUND THEN
circuit_width := 0 ;
return(circuit_width);
end sf_get_circuit_width;
---------------------------调用函数
select sf_get_circuit_width(a.circuit_id) from pub_log_circuit a where a.circuit_id='000101560000000000241724'
查询结果总是为0
但如果直接用sql语句,
select total_width from
(
select c.circuit_no,sum(band_width) as total_width from
(
--速率为空,replace函数返回空
select x.circuit_no,cast(replace(x.band_width,'M','000000') as integer) as band_width from (
select b.circuit_no,REPLACE(sf_get_desc_china(b.circuit_rate),'K','000') as band_width
from pub_log_circuit b
where b.circuit_id in
(select a.opr_id from pub_opr_route a where a.res_id='000101560000000000241724')
) x
) c
group by rollup(c.circuit_no)
) d where d.circuit_no is null;
查询结果正常,结果为123256000
SQL 函数
SQL 拥有很多可用于计数和计算的内建函数。
函数的语法
内建 SQL 函数的语法是:
SELECT function(列) FROM 表
函数的类型
在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:
- Aggregate 函数
- Scalar 函数
合计函数(Aggregate functions)
Aggregate 函数的操作面向一系列的值,并返回一个单一的值。
注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!
"Persons" table (在大部分的例子中使用过)
Name | Age |
---|---|
Adams, John | 38 |
Bush, George | 33 |
Carter, Thomas | 28 |
MS Access 中的合计函数
函数 | 描述 |
---|---|
AVG(column) | 返回某列的平均值 |
COUNT(column) | 返回某列的行数(不包括 NULL 值) |
COUNT(*) | 返回被选行数 |
FIRST(column) | 返回在指定的域中第一个记录的值 |
LAST(column) | 返回在指定的域中最后一个记录的值 |
MAX(column) | 返回某列的最高值 |
MIN(column) | 返回某列的最低值 |
STDEV(column) | |
STDEVP(column) | |
SUM(column) | 返回某列的总和 |
VAR(column) | |
VARP(column) |
在 SQL Server 中的合计函数
函数 | 描述 |
---|---|
AVG(column) | 返回某列的平均值 |
BINARY_CHECKSUM | |
CHECKSUM | |
CHECKSUM_AGG | |
COUNT(column) | 返回某列的行数(不包括NULL值) |
COUNT(*) | 返回被选行数 |
COUNT(DISTINCT column) | 返回相异结果的数目 |
FIRST(column) | 返回在指定的域中第一个记录的值(SQLServer2000 不支持) |
LAST(column) | 返回在指定的域中最后一个记录的值(SQLServer2000 不支持) |
MAX(column) | 返回某列的最高值 |
MIN(column) | 返回某列的最低值 |
STDEV(column) | |
STDEVP(column) | |
SUM(column) | 返回某列的总和 |
VAR(column) | |
VARP(column) |
Scalar 函数
Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。
MS Access 中的 Scalar 函数
函数 | 描述 |
---|---|
UCASE(c) | 将某个域转换为大写 |
LCASE(c) | 将某个域转换为小写 |
MID(c,start[,end]) | 从某个文本域提取字符 |
LEN(c) | 返回某个文本域的长度 |
INSTR(c,char) | 返回在某个文本域中指定字符的数值位置 |
LEFT(c,number_of_char) | 返回某个被请求的文本域的左侧部分 |
RIGHT(c,number_of_char) | 返回某个被请求的文本域的右侧部分 |
ROUND(c,decimals) | 对某个数值域进行指定小数位数的四舍五入 |
MOD(x,y) | 返回除法操作的余数 |
NOW() | 返回当前的系统日期 |
FORMAT(c,format) | 改变某个域的显示方式 |
DATEDIFF(d,date1,date2) | 用于执行日期计算 |
以上是关于sql 函数的主要内容,如果未能解决你的问题,请参考以下文章