在SQLServer2005中,此查询

select len(cast('the quick brown fox jumped over the lazy dog' as varchar))

返回30作为长度,而提供的字符串包含更多字符.这似乎是默认设置.为什么是30,而不是32或任何其他2的幂?

[EDIT]我知道我在向varchar施法时应该始终指定长度,但这是一个快速的"让我们判断一下"查询.问题依然存在,为什么是30?

推荐答案

为什么不指定varchar长度?例如:

SELECT CAST('the quick brown fox jumped over the lazy dog' AS VARCHAR(45))

至于为什么是30,这是SQL Server中该类型的默认长度.

char and varchar (Transact-SQL)开始:

当数据定义或变量声明语句中未指定n时,默认长度为1.When n is not specified when using the CAST and CONVERT functions, the default length is 30.

Sql相关问答推荐

协助 PERCENTILE_CONT 函数和 GROUP 错误

达到总和后停止 SQL 选择

Bigquery SQL Multiple Count group-by 在单个查询中

Erlang 数据库加入关联

SQL查询根据两列对日期进行排序

js数量限制

雪花.如何判断子数组是否存在于另一个数组中?

如何删除具有重复列组合的行

在没有明显分区列的情况下使用多个分区的 Spark 窗口

row_number() 但仅在列中的特定值之后增加值

如何拆分具有逗号和冒号的字符串

如何在 Sql 中聚合

删除名称错误的过程 (MSSQL)

当行值非零时获取列表聚合中的列名

在 string_agg 函数中使用 if 语句

适用于所有(或大多数)数据库的高效 SQL 测试查询或验证查询

SQL:从时间戳日期中减去 1 天

如何在 postgresql 中按周分组

查询、本机查询、命名查询和类型查询之间的区别

postgresql - 查看架构权限