如何将之前为0001而现在应该为0002的字段增加+1? 我目前正在使用以下命令:

SELECT fieldA+1
FROM table
WHERE ID = 1234;

但这只会把0001变成2

这是一个非常基本的问题,但我不明白.

推荐答案

类型为INT的字段必须首先转换为字符串(或CHAR),以便执行基于字符串的操作,例如填充-尽管这可能会被隐式地处理.

例如:

SELECT 
    LPAD(fieldA + 1, 4, '0') as fieldA_
FROM table
WHERE ID = 1234;
fieldA_
0002

其中,LPAD个参数如下:LPAD(str, len [,padstr]).


相关文档:

旁白:

  • 设计人员必须确保焊盘长度足够,否则字符为will be truncated.

  • 可以考虑将"格式化"活动留给前端,而将"数据"活动留给后端(即数据库).不管你决定采取哪种方式,be consistent美元.如果/当更新时,其他开发人员和维护人员可能会感到沮丧,因为他们不知道在应用更新时到底要看哪里.(例如此更改适用于数据库还是应用程序?这是一个经常被问到的问题.)

  • Take-away:考虑到获得正确的焊盘长度的潜在复杂性(查看下面的注释)-just do the formatting in the application itself.让数据库句柄data和应用程序句柄presentation.


编辑:

  • 已解决说明不需要拨打CAST的 comments .
  • 解决了有关字符串截断的注释.

Mysql相关问答推荐

正在获取MySQL死锁,因为这个查询需要很长时间.

MySQL在使用SELECT*时不使用索引

MySQL多连接以获得单个结果集(使用MySQL max函数)

了解MySQL_stmt_BIND_NAMED_Param()-MySQL C API

在时间戳上搜索大的MySQL表很慢

无法连接到扩展坞MySQL Unix套接字

获取每个参数的记录,不重复

如何将多个字符串插入变量

从 MySQL WordPress Select 最后一行

在 MySQL 中跨日期和位置计算和排序实体的共现

在 MySQL 中使用非空条件 LAG() 函数

如何让连续 3 周或以上的用户有订单?

MYSQL:范围匹配与周年纪念日

SQL从字典中的键获取值

如何使用 SQL 聚合和求和相似 Select 的值?

如何从将分钟、天、月和年存储在不同列中的表中查询数据

查询给出错误时的 mySQL Group_Concat 和 Case

判断一对记录是否属于多个组ID

PDO:MySQL 服务器已消失

MySQL - 在 MySQL UPDATE 或 SELECT 查询中使用 If Then Else