【问题标题】:Using VARCHAR in Mysql在 Mysql 中使用 VARCHAR
【发布时间】:2020-04-15 16:50:03
【问题描述】:

我可以使用 VARCHAR 来存储这个 GVC/AK/CR/1/2017/001 吗?

CREATE TABLE clients 
(
    client_id INT AUTO_INCREMENT ,
    name VARCHAR (50),
    phone_no INT (11),
    plan_no VARCHAR (20),
    job_remark VARCHAR (12),
    quater INT,
    year DATE,
    PRIMARY KEY (client_id)
);

INSERT INTO clients (name, phone_no, plan_no, job_remark, quater, year,) 
VALUES (name= 'UAE GEO', phone_no= 07037695328, plan_no= 'GVC/AK/CR/1/2017/001', job_remark= 'revalidation', quater= 1, year= '2017-03-28');

我收到一个错误:

ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 ') VALUES ('UAE GEO', 07037695328, 'GVC/AK/CR/1/2017/001', 'revalidation', 1, '20 附近使用的正确语法' 在第 1 行

【问题讨论】:

  • 这很可能是因为INSERT INTO 子句中最后一个不必要的逗号 - 在year 之后,就在结束) 之前......
  • 如果您声明了您的列,则不需要再次分配它

标签: mysql storage using varchar


【解决方案1】:

您的插入语句中有错误。您无需在 Values () 部分中提供列名。此外,您在列部分还有一个额外的尾随 ,。 下面的语句应该有效:

INSERT INTO clients (name, phone_no, plan_no, job_remark, quater, year) VALUES ( 'UAE GEO',  07037695328, 'GVC/AK/CR/1/2017/001', 'revalidation', 1, '2017-03-28')

编辑

由于电话号码列会抛出Out of range 错误,您可以找到here。您也可以将 phone_no 用作 VARCHAR 来解决此问题。

CREATE TABLE clients 
(
    client_id INT AUTO_INCREMENT ,
    name VARCHAR (50),
    phone_no VARCHAR (11),
    plan_no VARCHAR (20),
    job_remark VARCHAR (12),
    quater INT,
    year DATE,
    PRIMARY KEY (client_id)
);

请阅读doc 了解此 MySQL 语句

【讨论】:

  • ER_WARN_DATA_OUT_OF_RANGE:第 1 行的“phone_no”列的值超出范围
  • 是的,对于 MySQL,INT 值超出范围。您可以在 EDIT 中查看该错误的解释链接。
  • 同时,INT 上的 (11) 没有任何意义。
猜你喜欢
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 2010-11-21
  • 2012-07-11
  • 2010-11-18
相关资源
最近更新 更多