• nvarchar 和varchar 在len下一致,datalength下nvarchar翻倍


    上一篇文档,写的是,老程序存储数据没有trim,导致的一些长度问题:截断字符串

    和客户说是,还闹出了一个不大的笑话,当时提供脚本给客户的生产环境,用的是len,len()函数会把后面的空格自动过滤,结果显示没有空格,长度没问题,

    然后用datalength()函数才搞出来,成功向客户证明这个他们原来的系统的一个隐藏issue.

    随后自己有在本机实验了连个函数的区别,,win8,64位,英文系统, 

    DECLARE @testLen nvarchar(32)
    SET @testLen=' A '
    PRINT LEN(@testLen)--2
    PRINT DATALENGTH(@testLen)--6

    DECLARE @testLen1 varchar(32)
    SET @testLen1=' A '
    PRINT LEN(@testLen1)--2
    PRINT DATALENGTH(@testLen1)--3
    GO
    PRINT 'no space '
    DECLARE @testLen nvarchar(32)
    SET @testLen=' A A'
    PRINT LEN(@testLen)--4
    PRINT DATALENGTH(@testLen)--8

    DECLARE @testLen1 varchar(32)
    SET @testLen1=' A A'
    PRINT LEN(@testLen1)--4
    PRINT DATALENGTH(@testLen1)--4

    nvarchar 长度在datalength时,会倍于varchar.(因为nvarchar 字节的存储大小是所输入字符个数的两倍。)

    nvarchar和varchar在len()函数中保持一致

    也就是说,DaditaLength是数据库存了啥就是啥,len函数在显示时trim掉了尾部的空格

    代做毕业设计和论文 私活, 需要.net,asp.net ,mvc ef cs 客户端,bs 网站项目开发的请私信我,
  • 相关阅读:
    MySQL优化
    MySQL 的 SQL 操作
    笔记本电脑同时使用两个网络
    top
    logrotate
    正则表达式学习总结
    HttpClient parameter 和body 传输同时进行
    Node.js背景
    前后端分离的理解
    shiro 的subject 以及Context 对象的具体的含义。
  • 原文地址:https://www.cnblogs.com/duguzhenglong/p/7111863.html
Copyright © 2020-2023  润新知