DATALENGTH()函数返回以字节为单位的数据长度。
桌子是这样的:
create table tb3
(
id int,
id2 varchar(100),
nome varchar(200)
)
| id | id2 | nome | |
|---------|-------|-------|---|
| 1 | 1 | r | |
| 1 | 11 | r1 | |
| 1 | 111 | r11 | |
| 1 | 1111 | r111 | |
| 1 | 11111 | r1111 | |
| 11 | 11111 | r1111 | |
| 1111111 | 11111 | r1111 | |但当我这样做的时候:
select DATALENGTH(id), DATALENGTH(id2), DATALENGTH(nome) from tb3
| (No column name) | (No column name) | (No column name) | |
|------------------|------------------|------------------|---|
| 4 | 1 | 1 | |
| 4 | 2 | 2 | |
| 4 | 3 | 3 | |
| 4 | 4 | 4 | |
| 4 | 5 | 5 | |
| 4 | 5 | 5 | |
| 4 | 5 | 5 | 为什么它说每个varchar字符只使用一个字节?如果我没有弄错,varchar使用两个字节+字符数。
发布于 2019-05-29 15:50:11
'DATALENGTH()‘函数只返回数据的长度,这些额外的两个字节被认为是“元数据”--关于数据和/或其存储的信息。
如果传递一个字符串文本函数(DATALENGTH('12345')返回5),则得到相同的值--如果函数包含存储开销以及字符串的内容,情况就不会如此。
要考虑存储开销,DATALENGTH函数需要知道或能够派生出值来自何处,以及如果数据被压缩等,该位置的结构,以及所有这些都会使该函数的效率大大降低。
发布于 2019-05-29 15:59:32
https://dba.stackexchange.com/questions/239350
复制相似问题