zoukankan      html  css  js  c++  java
  • SQL Server 函数 LEN 与 DATALENGTH的区别

    DATALENGTH()函数返回一个用于对值进行管理的字节数,这有助于揭示不同数据类型间的一些有趣差别。

    当把varchar类型传递给DATALENGTH()和LEN()函数时,它们将返回相同的值:

    1
    2
    3
    4
    DECLARE @Value varchar(20) 
    SET @Value = 'abc'
    SELECT DATALENGTH(@Value) 
    SELECT LEN(@Value)

    这些语句的返回值都为3。

    因为varchar类型使用了3个单字节字符来存储三个字符的值。然而,如果使用nVarchar类型来管理相同长度的值,就要占用多一倍的字节:

    1
    2
    3
    4
    DECLARE @Value nvarchar(20) 
    SET @Value = 'abc'
    SELECT DATALENGTH(@Value) 
    SELECT LEN(@Value)

    DATALENGTH()函数返回值为6,因为每个使用Unicode字符集的字符都要占用2个字节。

    LEN()函数返回值为3,因为这个函数返回字符数,不是字节数。

    以下是一个有趣的测试:要存储一个值为2的整型变量,要占用多少个字节?而如果要存储一个值为20亿的整型变量,又将占用多少个字节呢?试一下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    DECLARE @Value1 int, @Value2 int
     
    SET @Value1 = 2 
    SET @Value2 = 2000000000 
     
    SELECT DATALENGTH(@Value1) 
    SELECT LEN(@Value1) 
    SELECT DATALENGTH(@Value2) 
    SELECT LEN(@Value2)

    在这两种情况下,DATALENGTH()函数都返回4。

    因为int类型不论值是多少,总是使用4个字节。

    LEN()函数本质上将整型值当成已转换成字符型的数据来处理,所以,在这个例子中,它分别返回1和10,即值的位数。

  • 相关阅读:
    MOSS中实现自动上传图片
    2008年最后一天了
    MOSS中使用无刷新的日历日程控件破解版
    UC R2 Metro Tranning
    明智IT, 逆势成长概述
    RMS Client如何使用AD组策略部署
    MOSS & Project Server 2007
    MOSS & SSO 系列2
    Dynamics AX 2009 Trainning
    MOSS & SSO 系列4
  • 原文地址:https://www.cnblogs.com/firstdream/p/8991338.html
Copyright © 2011-2022 走看看