SQL Server 函数 LEN 与 DATALENGTH的区别

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

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

DECLARE @Value varchar(20)
SET @Value = ‘abc‘
SELECT DATALENGTH(@Value)
SELECT LEN(@Value)

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

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

DECLARE @Value nvarchar(20)
SET @Value = ‘abc‘
SELECT DATALENGTH(@Value)
SELECT LEN(@Value)

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

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

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

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,即值的位数。

原文:http://blog.csdn.net/Hello_World_wusu/article/details/4667452

时间: 2024-10-05 23:25:14

SQL Server 函数 LEN 与 DATALENGTH的区别的相关文章

SQL Server 中CAST和Convert的区别

在 SQL Server 中Cast和Convert都是将表达式由一种数据类型转换为另一种数据类型.由于SQL Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了.CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性.CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些.不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需

SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

原文:SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方式的用法. 先建立一个表,并添加一些数据来进行演示: CREATE TABLE t_student( Id INT NOT NULL, Name NVARCHAR (10) NULL, Age TINYINT NULL, School NVARCHAR(20) NULL, Class NVAR

Sql Server函数和存储过程

SQL Server函数是一种封装一条或多条SQL语句的结构. SQL Server函数分为系统函数和用户自定义函数两种. 标量值函数:标量值函数的返回值是基本数据类型的单个值或单个值得表达式. 函数体既可以是一条语句,也可以是多条语句. 创建标量值函数 语法: CREATE FUNCTION [schema_name.]function_name([{@parameter_name parameter_data_type[=default_value]}[...n]])RETURNS retu

Sql Server函数全解<五>之系统函数

原文:Sql Server函数全解<五>之系统函数  系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些信息.下面介绍系统函数的作用和使用方法. 1.返回表中指定字段的长度   COL_LENGTH(table,column)函数返回表中指定字段的长度值.其返回值为int类型,table为要确定其列长度信息的表的名称,是nvarchar类型的表达式.column为要确定其长度的列的名称,是nvarchar类型的

简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别

原文:简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别 这次简单说说游标的分类. 先看看通常游标的语法 DECLARE cursor_name CURSOR [ LOCAL :局部游标,仅在当前会话有效 | GLOBAL : 全局游标,全局有效,可以 ] [ FORWARD_ONLY :只能向前游标,读取游标时只能使用 Next 谓词 | SCROLL :滚动游标,FIRST.LAST.PRIOR.NEXT.RELATIVE.ABSOLUTE 都可以使用 ] [

SQL Server函数大全

SQL Server函数大全 SQL Server中的函数对于提高查询的工作效率起到了非常突出的作用.善于在查询工作或开发工作中利用好SQL函数,将对工作有很大的帮助,同时也会大大提升工作的效率.但是由于SQL函数种类众多.所以在使用的时候往往会无法全部理解它们的含义和用法.下面将详细对SQL函数的含义和使用方法做一个比较系统的介绍: 在实际工作中,select语句中只能使用SQL函数对字段进行操作,常见的函数可以分为以下几大类: 1.字符转换函数 1)ASCII() 返回字符表达式最左端字符的

SQL Server2008为表的某列设置默认值为SQL Server函数

  例如,设置SQL Server函数GETDATE()作为默认值: SQL Server2008为表的某列设置默认值为SQL Server函数

sql server 函数的自定义

创建用户定义函数.这是一个已保存 Transact-SQL 或公共语言运行时 (CLR) 例程,该例程可返回一个值.用户定义函数不能用于执行修改数据库状态的操作.与系统函数一样,用户定义函数可从查询中调用.标量函数和存储过程一样,可使用 EXECUTE 语句执行. 用户定义函数可使用 ALTER FUNCTION 修改,使用 DROP FUNCTION 删除. Transact-SQL 语法约定 语法 Scalar Functions CREATE FUNCTION [ schema_name.

Sql Server函数全解&lt;四&gt;日期和时间函数

原文:Sql Server函数全解<四>日期和时间函数   日期和时间函数主要用来处理日期和时间值,本篇主要介绍各种日期和时间函数的功能和用法,一般的日期函数除了使用date类型的参数外,也可以使用datetime类型的参数,但会忽略这些值的时间部分.相同的,以time类型值为参数的函数,可以接受datetime类型的参数,但会忽略日期部分. 1.获取系统当前日期的函数getDate();  getDate()函数用于返回当前数据库系统的日期和时间,返回值的类型为datetime.[例]sel