对你简单而对我不简单的问题! DECLARE @参数1 AS NVARCHAR SET @参数1 = '6000' ---------------真实结果:select datalength(@参数1)--------结果是 ‘2’---------------希望结果:select datalength(@参数1)--------结果是 ‘4’同样:select @参数1 --------结果'6' 为什么不是‘6000’菜鸟的知识盲点,希望大家速度解决 ! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NVARCHAR要有长度 NVARCHAR(10) DECLARE @参数1 AS VARCHAR(100) SET @参数1 = '6000' select datalength(@参数1) -------结果是 ‘4’ select len(@参数1) --------结果是 ‘4’ select @参数1 --------结果是 ‘6000’ DECLARE @参数1 AS NVARCHAR(30)你忘了定义长度了 DataLength()函数将返回存储或显示一个表达式所用的字节数.处理可变长度的字符数据类型时这个信息尤其有用,它不是和Len()函数一样返回字符数.例如,在nvarchar数据类型(或任何unicode数据类型)中,每个字符都使用两个字节.DataLength()函数的语法:DataLength(expression) DECLARE @参数1 AS NVARCHAR(50) ----在这里加上变量的长度SET @参数1='6000'Select LEN(@参数1) ----结果是 '4'Select @参数1 ----结果是 '6000' 对于SQL和男人来说,长度是很关键的。 楼主朋友,这个问题的产生可能和你在定义变量时NVARCHAR没有限定长度有关.datalength函数本身没有任何问题,这个函数的功能是把参数的字节长度返回.由于您没有规定NVARCHAR的长度,可能变量已经隐式转换成了整形变量了,而且其值是6,所以您在打印时,长度是2.具体的问题我也不是十分清楚.把变量的长度规定一下以后就能解决这个问题.需要注意的是,NVARCHAR存储的是unicode编码变量,长度应该是普通变量的2倍.在这中情况下:DECLARE @参数1 AS NVARCHAR(20) SET @参数1 = '6000' SELECT DATALENGTH(@参数1)输出的值是8,而不是4.因为变量@参数1是unicode编码,一个字符就占据了2个字节空间,所以输出是8.如果想得到4的话,那么就把变量声明为VARCHAR(20)就可以了.当然,长度是一个大于4的就可以. sql 能否访问局域网内的文件? 数据库无法访问 讨论一个数据库 数据效验的 问题 望高手参加 帮助一下!!谢谢 SQL的问题 如何获取SQL SERVER数据库中一个表的权限,如Table1的读,写,删,更新的权限并返回相应的值呢?? 请问大家一个大容量数据访问问题 sql server 2000如何授权用户“修改表结构(alter table)”的权限 注入只能进行 select吗? 如何导入文本文件到SQL中.... 在存储过程中,如何判断select 出来的字段的类型 如何能够删干净所有的用户表的所有约束
SET @参数1 = '6000'
select datalength(@参数1) -------结果是 ‘4’
select len(@参数1) --------结果是 ‘4’
select @参数1 --------结果是 ‘6000’
DECLARE @参数1 AS NVARCHAR(30)你忘了定义长度了
DataLength()函数的语法:
DataLength(expression)
SET @参数1='6000'Select LEN(@参数1) ----结果是 '4'
Select @参数1 ----结果是 '6000'
在这中情况下:
DECLARE @参数1 AS NVARCHAR(20)
SET @参数1 = '6000'
SELECT DATALENGTH(@参数1)
输出的值是8,而不是4.因为变量@参数1是unicode编码,一个字符就占据了2个字节空间,所以输出是8.
如果想得到4的话,那么就把变量声明为VARCHAR(20)就可以了.当然,长度是一个大于4的就可以.