zoukankan      html  css  js  c++  java
  • sql server 系统常用函数:聚合函数 数学函数 字符串函数 日期和时间函数和自定义函数

    一、系统函数

    1.聚合函数

    聚合函数常用于GROUP BY子句,在SQL Server 2008提供的所有聚合函数中,除了COUNT函数以外,聚合函数都会忽略空值
    AVG、COUNT、COUNT_BIG、MAX 、MIN、SUM......

    2.数学函数 ABS ROUND FLOOR CEILING......

    3.字符串函数 LEFT LEN LOWER LTRIM REPLACE RIGHT......

    4.日期和时间函数 DATEADD DATEDIFF  DATENAME DATEPART DAY MONTH YEAR GETDATE

    sqlserver日期函数:http://wenku.baidu.com/link?url=wVoEbufUSd06dFyvk6W6AQDjtcjRNY0VzmFJCFLLp6-L8KPyX7ZwG1-muZmoclyDKdL4QhS0WZN7r3EcaHegI7bXELpZA-g5mAjEIpPKAWq

    5.其它:

    ISNULL :SELECT AVG(ISNULL(Weight, 50))FROM Production.Product
    COALESCE:返回其参数中第一个非空表达式 SELECT Name, COALESCE(Class, Color, ProductNumber) AS FirstNotNull FROM Production.Product

    二、自定义函数(可在定义returns 类型后可选添加[WITH ENCRYPTION],表明 函数是被加密的,任何人都不能查看该函数的定义)

    特点:用户自定义函数则可以出现在一个查询语句的FROM之后

             SQL Server 用户定义的函数 与 存储过程 视图的区别:百度文库中的SQL Server 用户定义的函数 与 存储过程 视图的区别

    1.标量值函数

    create function funTest (@count int)
    returns int
    as
    begin
    return @count+100
    end
    --测试
    print dbo.funTest(10)

    2.内联表值函数

    create function funTest (@id int)
    returns table
    as
    return (select ttt.* from BD_TradeType tty
    inner join XH_TodayTradeTable ttt
    on tty.TradeTypeId=ttt.TradeTypeId where tty.TradeTypeId=@id
    )
    --测试
    select * from dbo.funTest(1)

    3.多语句表值函数

    多语句表值函数允许多条语句来创建表的内容。多语句表值函数可以用来替换使用多个步骤来构建结果集的存储过程

    CREATE FUNCTION Sales.ufnSalesByCustomerMS (@CustomerID int)
    RETURNS @table TABLE
    ( ProductID int PRIMARY KEY NOT NULL,
    ProductName nvarchar(50) NOT NULL,
    TotalSales numeric(38,6) NOT NULL,
    TotalInventory int NOT NULL )
    AS
    BEGIN
    INSERT INTO @table
    SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS Total, 0
    FROM Production.Product AS P
    JOIN Sales.SalesOrderDetail SD ON SD.ProductID = P.ProductID
    JOIN Sales.SalesOrderHeader SH ON SH.SalesOrderID = SD.SalesOrderID
    WHERE SH.CustomerID = @CustomerID
    GROUP BY P.ProductID, P.Name;

    UPDATE @table
    SET TotalInventory = dbo.ufnGetTotalInventoryStock(ProductID);

    RETURN;
    END;

    --测试
    SELECT * FROM Sales. ufnSalesByCustomerMS (30052);

  • 相关阅读:
    Sed的使用方法简介
    Shell脚本基础
    网络配置与内核模块相关
    RPM管理,计划任务与性能监控
    SSH服务
    LVM与RAID阵列
    网络存储服务器
    FTP服务
    网络安全之iptables防火墙
    MySQL使用笔记(七)排序和限制数据记录查询
  • 原文地址:https://www.cnblogs.com/ylemzhang/p/3411806.html
Copyright © 2011-2022 走看看