【问题标题】:SQL - MariaDB : SQL Error 1292 Truncated incorrect DOUBLE valueSQL - MariaDB:SQL 错误 1292 截断不正确的 DOUBLE 值
【发布时间】:2022-01-26 08:43:50
【问题描述】:

经过和我的好友 G 的几次搜索,我找到了很多解决方案,但没有一个符合我的情况。 快速解释: 我目前正在尝试创建一个“测试表”,每天将接收 400 万行。这大约是 48 行/秒。

为了模拟这种情况,我想为我的“LotNumber”列创建一个默认编号,该编号将基于小时和分钟创建。 示例:在上午 9 点和 45 分钟创建的所有行都将具有以下“LotNumber”:W11409:451

又名 W114+HH:MM+1

所以,我的默认列值是:

concat(cast('W114' as char charset utf8mb4) + left(cast(curtime() as char charset utf8mb4),5) + cast('1' as char charset utf8mb4))

地狱是的,这太野蛮了。 我的“LotNumber”列是 VARCHAR

当我创建单行时,HeidiSQL 发送错误消息 1292。

我是 SQL 新手,我不知道我的错误在哪里。

【问题讨论】:

  • 如果你使用concat函数,使用,连接数据,而不是+

标签: sql concatenation mysql-error-1292


【解决方案1】:

您的代码有效,只需用 , 而不是 + 分隔数据元素

select concat(
  cast('W114' as char charset utf8mb4),
  left(cast(curtime() as char charset utf8mb4),5),
  cast('1' as char charset utf8mb4)
  )

你可以在这个db<>fiddle上测试

【讨论】:

  • 嗨,詹姆斯,感谢您的快速回答。我更改了我的代码,但是当我添加一行时,我有这个新错误:1292,截断不正确的时间值:''我尝试添加/不添加“选择”。也许是因为我处于默认值?
  • 您能否在 dbfiddle 上的某个 Maria Db 中复制您的查询。正如我与您分享的那样,仅更改这些小点的查询是有效的。
  • 好的,好吧,当我从控制台使用查询时,这是可行的,从一开始我就通过右键单击自己创建行......但这并不好用。感谢您的有用帮助。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 2020-10-26
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2018-10-01
  • 1970-01-01
相关资源
最近更新 更多