首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >varchar(0)的目的是什么?

varchar(0)的目的是什么?
EN

Stack Overflow用户
提问于 2014-02-04 14:43:01
回答 5查看 8.1K关注 0票数 8

最近,我遇到了一个由数据库创建脚本中的一个错误引起的问题,根据这个错误,数据库中的一个列被创建为varchar(0)而不是varchar(20)

我以为我会得到一个0长度字符串字段的错误,但我没有。varchar(0)char(0)的目的是什么,因为我无论如何都无法在本专栏中存储任何数据。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-04 14:47:05

这在SQL-92标准中是不允许的,但在MySQL中是允许的。来自MySQL手册

MySQL允许您创建类型为CHAR(0)的列。这主要是当您必须与依赖于列的存在而不实际使用其值的旧应用程序兼容时,这是非常有用的。当您需要一个只能接受两个值的列时,CHAR(0)也是非常好的:定义为CHAR(0) NULL的列只占用一位,只能使用NULL'' (空字符串)值。

票数 13
EN

Stack Overflow用户

发布于 2014-02-04 14:47:42

只要检查了MySQL,它确实允许零长度CHAR和VARCHAR.

这并不是说它非常有用,但我可以想到一种情况,当您不再需要时,将一列截断为0长度,但是您不想破坏在那里写东西的现有代码。您分配给0长度列的任何内容都将被截断并发出警告,但是警告不是错误,它们不会破坏任何东西。

票数 5
EN

Stack Overflow用户

发布于 2014-02-04 14:47:22

由于它们是类似的类型,charvarchar,我将冒昧地猜测varchar(0)的用例与char(0)相同。

来自字符串类型的文档

MySQL允许您创建CHAR(0)类型的列。这主要是当您必须与依赖于列的存在而不实际使用其值的旧应用程序兼容时,这是非常有用的。当您需要一个只能接受两个值的列时,CHAR(0)也是非常好的:定义为CHAR(0) NULL的列只占用一个位,并且只能接受NULL和'‘值(空字符串)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21555485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档