You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何T-SQL中N','的DATALENGTH返回2?Unicode逗号字节数疑问

关于T-SQL中N','数据长度的疑问解答

执行select datalength(N','), unicode(N',')语句时,第一列返回2,第二列返回44。逗号属于Unicode前128个字符(44小于128),理论上用1字节就能存储(比如编码0x2C),但为什么T-SQL显示它占用2字节?


核心原因是**N'xxx'声明的是Unicode字符串(对应NVARCHAR/NCHAR类型)**,SQL Server中这类字符串统一采用UTF-16编码存储——不管字符是否属于ASCII范围,每个常规字符都会占用2字节(补充字符除外,逗号不在此范畴)。

  • DATALENGTH()函数返回的是字符串实际占用的存储字节数,而非字符的理论最小编码长度
  • UNICODE()函数返回的是字符的Unicode码点(逗号的码点就是44),这和存储时的编码字节数是完全不同的概念

如果想让ASCII字符只占用1字节存储,只需去掉N前缀,使用普通的VARCHAR/CHAR类型即可。比如执行select datalength(','), unicode(','),此时第一列就会返回1。


内容的提问来源于stack exchange,提问作者J. Mini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 13:19:56