zoukankan      html  css  js  c++  java
  • sql server中部分函数功能详解

    1.TOP 子句

    TOP 子句用于规定要返回的记录的数目。

    对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

    SQL Server 的语法:

    SELECT TOP number|percent column_name(s)

    FROM table_name

     

    2.’%%’查询

    我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

    我们可以使用下面的 SELECT 语句:

    SELECT * FROM Persons

    WHERE City LIKE '[ALN]%'

    3. IN 操作符实例

    现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:

    我们可以使用下面的 SELECT 语句:

    SELECT * FROM Persons

    WHERE LastName IN ('Adams','Carter')

    4. LEN() 函数

    LEN 函数返回文本字段中值的长度。

    SQL LEN() 语法

    SELECT LEN(column_name) FROM table_name

    5. ROW_NUMBER()OVER()函数

    ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

    6. ROUND 函数

    用于把数值字段舍入为指定的小数位数。

    语法

    ROUND ( numeric_expression , length [ , function ] )

    参数

    numeric_expression

    精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

    length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。

    7.HAVING 子句

    在 SQL 中增加 HAVING 子句原因是WHERE 关键字无法与合计函数一起使用。

    SQL HAVING 语法

    SELECT column_name, aggregate_function(column_name)

    FROM table_name

    WHERE column_name operator value

    GROUP BY column_name

    HAVING aggregate_function(column_name) operator value

    Having 只用于查询条件中有合计函数的。

    8. ISNULL函数

    (1)ISNULL
    使用指定的替换值替换 NULL。
    语法
    ISNULL ( check_expression , replacement_value )

    这里isnull用于查询字段里

    (2)

    case when isnull(b.c_delivery_type,'')='' then  b.c_delivery_type else a.c_delivery_type end  as 物流方式

    null是特殊的值,他不能被进行比较,所以=<>等这些符号是不能判断null的,所以isnull(字段名,'')='',把null转换成'',再和''比较,而字段名='',由于没有处理null的情况,所以如果字段有null值,将被忽略

    9.union 用法

    分为union与union all
    union 缺省在合并结果集后消除重复项,

    union all 指定在合并结果集后保留重复项,
    打个比喻吧 比如A表的数据是 A{ 1,4,5,9}       B{2,3,4,5}
    那我执行此语句 select * from A union select * from B 那结果是{1,2,3,4,5,9}
    如果执行select * from A union all select * from B 结果是{1,2,3,4,4,5,5,9}

    10. DateDiff()

    DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。

    表达式DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])

    允许数据类型: timeinterval 表示相隔时间的类型,代码为:

    年份 yy、yyyy 季度 qq、q

    月份 mm、m

    每年的某一日 dy、y

    日期 dd、d

    星期 wk、ww

    工作日 dw

    小时 hh

    分钟 mi、n

    秒 ss、s

    毫秒 ms

    11. datepart()函数

    DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

    DATEPART(datepart,date)

    date 参数是合法的日期表达式。datepart 参数可以是下列的值:

    datepart

    缩写

    yy, yyyy

    季度

    qq, q

    mm, m

    年中的日

    dy, y

    dd, d

    wk, ww

    星期

    dw, w

    小时

    hh

    分钟

    mi, n

    ss, s

    毫秒

    ms

    微妙

    mcs

    纳秒

    ns

    12. join函数

    sqlleft joinright joininner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
    right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
    inner join(等值连接) 只返回两个表中联结字段相等的行

    13. group by

    group by 对结果集分组,针对每一组返回一行。

    若select子句中包含聚合函数,则聚合函数返回每个组的信息

    若指定group by时,select语句后的所有非聚合函数字段必须出现在group by列表中。

    14. cast()

    Cast()函数是转换数据类型的

    CAST 和 CONVERT (Transact-SQL),将一种数据类型表达式转换为另一种数据类型的表达式

    Transact-SQL 语法约定

    语法

    Syntax for CAST:

    CAST ( expression AS data_type [ (length ) ])

    Syntax for CONVERT:

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

    参数

    expression

    任何有效的表达式

    data_type

    目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。

    length

    指定目标数据类型长度的可选整数。默认值为 30。

    style

    指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分。

    15. dateadd()

    定义和用法

    DATEADD() 函数在日期中添加或减去指定的时间间隔。

    语法

    DATEADD(datepart,number,date)

    date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

    datepart 参数可以是下列的值:

    datepart

    缩写

    yy, yyyy

    季度

    qq, q

    mm, m

    年中的日

    dy, y

    dd, d

    wk, ww

    星期

    dw, w

    小时

    hh

    分钟

    mi, n

    ss, s

    毫秒

    ms

    微妙

    mcs

    纳秒

    ns

    16. datepart()

    定义和用法

    DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

    语法

    DATEPART(datepart,date)

    date 参数是合法的日期表达式。datepart 参数可以是下列的值:

    datepart

    缩写

    yy, yyyy

    季度

    qq, q

    mm, m

    年中的日

    dy, y

    dd, d

    wk, ww

    星期

    dw, w

    小时

    hh

    分钟

    mi, n

    ss, s

    毫秒

    ms

    微妙

    mcs

    纳秒

    ns

    17. charindex() substring()

    SQL CHARINDEX

    函数返回字符或者字符串在另一个字符串中的起始位置

    CHARINDEX

    函数调用方法如下:

    CHARINDEX ( expression1 , expression2 [ , start_location ] )

    Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在

    expression2中找expression1的位置。SQL CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置

    select substring('123,456',charindex(',','123,456') ,len('123.456')-3)  结果: ',456'
    意思:截取’123,456‘ 从第4为开始截取 4位

    substring(字段,第几个字符开始截取,截取长度)
    charindex(',','123,456')  ‘,’的位置 结果为:4
    len('123.456')  字段长度  结果为:7

    18. decimal()

    decimal(a,b)
    a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
    b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

    19. right()

    反回字符右边的指定长度的字符

    例:select right('1234',2)
    结果:34

    20. 取整函数

    1 trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作。
    2 round(value,precision)根据给定的精度(precision)进行四舍五入。
    3 ceil (value) 产生大于或等于指定值(value)的最小整数。
    4 floor(value)与 ceil()相反,产生小于或等于指定值(value)的最小整数。
    5 sign(value) 与绝对值函数ABS()相反。ABS()给出的是值的量而不是其符号,sign(value)则给出值的符号而不是量。

    21. partition by

    partition by的作用仅用于分组

    22.convert()

    定义和用法

    CONVERT() 函数是把日期转换为新数据类型的通用函数。

    CONVERT() 函数可以用不同的格式显示日期/时间数据。

    语法

    CONVERT(data_type(length),data_to_be_converted,style)

    data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

    可以使用的 style 值:

    Style ID

    Style 格式

    100 或者 0

    mon dd yyyy hh:miAM (或者 PM)

    101

    mm/dd/yy

    102

    yy.mm.dd

    103

    dd/mm/yy

    104

    dd.mm.yy

    105

    dd-mm-yy

    106

    dd mon yy

    107

    Mon dd, yy

    108

    hh:mm:ss

    109 或者 9

    mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

    110

    mm-dd-yy

    111

    yy/mm/dd

    112

    yymmdd

    113 或者 13

    dd mon yyyy hh:mm:ss:mmm(24h)

    114

    hh:mi:ss:mmm(24h)

    120 或者 20

    yyyy-mm-dd hh:mi:ss(24h)

    121 或者 21

    yyyy-mm-dd hh:mi:ss.mmm(24h)

    126

    yyyy-mm-ddThh:mm:ss.mmm(没有空格)

    130

    dd mon yyyy hh:mi:ss:mmmAM

    131

    dd/mm/yy hh:mi:ss:mmmAM

    实例

    下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

    CONVERT(VARCHAR(19),GETDATE())

    CONVERT(VARCHAR(10),GETDATE(),110)

    CONVERT(VARCHAR(11),GETDATE(),106)

    CONVERT(VARCHAR(24),GETDATE(),113)

    结果类似:

    Dec 29 2008 11:45 PM

    12-29-2008

    29 Dec 08

    29 Dec 2008 16:25:46.635


    语句及查询结果:
    SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
    SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
    SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
    SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
    SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
    SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
    SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
    SELECT CONVERT(varchar(100), GETDATE(), 7): 05 1606
    SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
    SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
    SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
    SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
    SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
    SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
    SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
    SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
    SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
    SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
    SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
    SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
    SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
    SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
    SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
    SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
    SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
    SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
    SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
    SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
    SELECT CONVERT(varchar(100), GETDATE(), 107): 05 162006
    SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
    SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
    SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
    SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
    SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
    SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
    SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
    SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
    SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49:000

    23 Sql Server REPLACE函数的使用

    REPLACE
    用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

    Replace(‘123456’,’23’,’9’)

    将123456中的23用9替换掉

    24 str(a,b,c)函数

    将数值型转换成指定长度的字符串

    如select STR(12345.633,7,1) 结果为12345.6

    第一个参数是要转换的数值,

    第二个参数是转换後的总长度(含小数点,正负号),

    第三个参数为小数位

    25 .INSERT INTO SELECT语句
    语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

    26. select 1 from table

    Select 1 from table 是查询表的数据有多少,select * from table是查询表的所有数据的详细信息

    27.rand()函数

    SQL RAND函数调用​可以产生随机数

    Select rand()获取介于0和1之间的一个数(小数)

    Select rand()*10获取0和10之间的一个数(小数)

    Select str(rand()*10)获取0和10之间的一个数(整数)

    Select str(rand()*10000) 获取0和10000之间的一个数(整数)

    28.存储过程中的SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 语句用法

    SET QUOTED_IDENTIFIER 为ON时,标识符可以由双引号分隔,文字必须由单引号分隔

    SET ANSI_NULLS,就是说NULL是否可以进行=和<>比较;

    当设置为ON 时,表示不可以进行比较,凡是进行比较的,结果都为0

    当设置为 OFF时,表示可以进行比较,比较的结果就是实际结果

    29. ISNUMERIC

    判断参数是否是纯数字型

    30.rtrim函数

    截断所有尾随空格后返回一个字符串。

     

  • 相关阅读:
    java面试题
    [gcc]: unknown (64bit) [FAIL]
    一种基于Spring的java程序常量管理思路
    if (! +"\v1")的解释
    jQuery validation plugin
    oscache缓存技术
    基于jQuery开发的javascript模板引擎jTemplates
    编写好的CSS代码的13个忠告
    对 HTTP 304 的理解
    Hibernate N+1 问题
  • 原文地址:https://www.cnblogs.com/xzsty/p/5722789.html
Copyright © 2011-2022 走看看