sql-server - DATALENGTH 不计算 SQL Server 中的无换行符 (0xA0) 字符
问题描述
DATALENGTH
0xA0
在 SQL Server 中返回字符串中的字节数时,不计算无换行符 ( ) 字符。在 PostgreSQL 中,OCTET_LENGTH
它计算指定字符串中的字节数,0xA0
同时返回结果集。这是 SQL Server 中的错误吗?
例子 -
下面这两个都返回 9 作为输出:
SELECT DATALENGTH('Blah Blah'); --contains no-breakspace
您可以通过 => https://unicodelookup.com/在上述选择中查找不间断空格字符
SELECT DATALENGTH('Blah Blah');
SQL Server 中是否还有其他可用功能也可以计算在内?LEN
没有帮助。
解决方案
该字符串在 PostgreSQL 中采用 UTF-8 编码。生成的字节数为 10,因为 8 个 ASCII 字符(0-127 代码点范围)需要 8 个字节,加上无换行符字符需要 2 个字节。
SQL Server varchar 数据类型只需要 9 个字节,因为非 ASCII 字符是根据排序规则代码页映射的。只需要 1 个字节来存储没有 Unicode 编码的无换行符字符,对于相同的值总共需要 9 个字节。
推荐阅读
- reactjs - 使用 React 应用程序的 Nginx 500 内部服务器错误 - 1 次重写或内部重定向周期,同时内部重定向到“/index.html”
- scala - 如何在大查询中为地图字段设置架构?
- r - 如何将两个大矩阵乘以相应的列和行
- java - 为什么我的代码会跳过 txt 文件中的某些元素?
- android - 实时数据
无法观察其他代码对对象所做的更改 - php - Nette 和 Flash 消息
- sql - DBT 'dbt snapshot' 命令导致错误:“快照快照名称中的数据库错误无法识别名称:id at [53:13]”
- api - 如何识别电子桌面应用程序实例
- angular - “属性 'rates' 没有初始化程序,也没有在构造函数中明确分配”
- python-3.x - python PIL在文本下添加图像