为什么使用 CAST 时 VARCHAR 的默认长度是 30?

Why is 30 the default length for VARCHAR when using CAST?(为什么使用 CAST 时 VARCHAR 的默认长度是 30?)
本文介绍了为什么使用 CAST 时 VARCHAR 的默认长度是 30?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 SQL Server 2005 中这个查询

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

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

我知道在转换为 varchar 时我应该总是指定长度,但这是一个快速的让我们检查一下的查询.问题仍然存在,为什么是 30?

解决方案

为什么不指定 varchar 长度?即:

SELECT CAST('敏捷的棕色狐狸跳过懒狗' AS VARCHAR(45))

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

来自 char 和 varchar (Transact-SQL):><块引用>

在数据定义或变量声明语句中未指定n时,默认长度为1.使用CAST和CONVERT函数时未指定n时,默认长度为30.

In SQL server 2005 this query

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

returns 30 as length while the supplied string has more characters. This seems to be the default. Why 30, and not 32 or any other power of 2?

[EDIT] I am aware that I should always specifiy the length when casting to varchar but this was a quick let's-check-something query. Questions remains, why 30?

解决方案

Why don't you specify the varchar length? ie:

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

As far as why 30, that's the default length in SQL Server for that type.

From char and varchar (Transact-SQL):

When n is not specified in a data definition or variable declaration statement, the default length is 1. When n is not specified when using the CAST and CONVERT functions, the default length is 30.

这篇关于为什么使用 CAST 时 VARCHAR 的默认长度是 30?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)