首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL中字符串到整数的转换是自动的吗?

在SQL中字符串到整数的转换是自动的吗?
EN

Stack Overflow用户
提问于 2018-12-29 04:41:51
回答 2查看 63关注 0票数 0

我使用一条SQL语句将一条记录插入到表中。该表被定义为;

代码语言:javascript
运行
复制
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| title       | varchar(255) | NO   |     | NULL    |                |
| description | text         | NO   |     | NULL    |                |
| filename    | varchar(255) | NO   |     | NULL    |                |
| type        | varchar(255) | NO   |     | NULL    |                |
| size        | int(11)      | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

SQL语句为;

代码语言:javascript
运行
复制
INSERT INTO photos 
  (title, description, filename, type, size) 
VALUES 
  ('Title D', 'Description D', 'Filename_D', 'BMP', '2000');

我一直被告知,如果列类型与您试图插入或更新的数据类型不匹配,SQL将抛出错误。

令我惊讶的是,尽管" size“列被定义为整数,并且size语句中的size数据被括在引号中,使其成为字符串('2000'),但SQL语句在MySQL和MS Access中仍然有效。

这是MySQL和MS Access的一个特性,还是所有符合SQL的数据库中SQL的工作方式?

EN

回答 2

Stack Overflow用户

发布于 2018-12-29 04:43:39

在大多数数据库中,字符串到数字的转换都是自动的。因此,您可以这样表达您的查询:

代码语言:javascript
运行
复制
INSERT INTO photos (title, description, filename, type, size) 
    VALUES ('Title D', 'Description D', 'Filename_D', 'BMP', '2000');

这不是一个好主意,因为隐式转换可能会生成转换错误--而您根本不知道它们来自哪里。我极力主张使用正确的类型或显式转换:

代码语言:javascript
运行
复制
INSERT INTO photos (title, description, filename, type, size) 
    VALUES ('Title D', 'Description D', 'Filename_D', 'BMP', 2000);
票数 4
EN

Stack Overflow用户

发布于 2018-12-29 16:01:00

感谢戈登·林诺夫的回答。

埃里克·勃兰特,我将对此提出一个新的问题。我也很想看看大家的反应。

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

https://stackoverflow.com/questions/53964072

复制
相关文章

相似问题

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