• SQL Server中DataLength()与Len()的区别


    代码
    DECLARE @a NVARCHAR(20),
            
    @b NVARCHAR(20),
            
    @c NVARCHAR(20)

    SET @a = 'abc'
    SET @b = ' abc'
    SET @c = 'abc '


    SELECT LEN(@aAS [LEN],DATALENGTH(@aAS [DATALENGTH] --3,6
    SELECT LEN(@bAS [LEN],DATALENGTH(@bAS [DATALENGTH] --4,8
    SELECT LEN(@cAS [LEN],DATALENGTH(@cAS [DATALENGTH] --3,8

    Len()返回指定字符串表达式的字符数,其中不包含尾随空格

    DataLength() 返回用于表示任何表达式的字节数。

    但是我还发现了以下的一些问题:

    代码
    DECLARE @d VARCHAR(20),--可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符
            
    @e NCHAR(20),--n 个字符的固定长度的 Unicode 字符数据。n 值必须在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。
            
    @f CHAR(20)--固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节

    SET @d = 'abc'
    SET @e = 'abc'
    SET @f = 'abc'

    SELECT LEN(@dAS [LEN],DATALENGTH(@dAS [DATALENGTH] --3,3
    SELECT LEN(@eAS [LEN],DATALENGTH(@eAS [DATALENGTH] --3,40
    SELECT LEN(@fAS [LEN],DATALENGTH(@fAS [DATALENGTH] --3,20

    对于这三种类型,DataLength返回的结果,我真是一头雾水,请高人指点。谢谢!

  • 相关阅读:
    Redis线程模型理解
    策略模式
    Spring Cloud 5大组件介绍
    单例模式
    hotspot虚拟机的调试
    编译虚拟机jvm——openjdk的编译
    mybatis的搭建和注入spring的方式
    springMvc+hibernate的web application的构建
    关于本博客
    本博客已停更
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/1946385.html
Copyright © 2020-2023  润新知