【问题标题】:Query to convert string data to int data to get max of value查询将字符串数据转换为 int 数据以获得最大值
【发布时间】:2017-07-27 10:50:32
【问题描述】:

我使用 CAST 和 CONVERT sintax 来转换如下图的数据:

这是我的查询:

SELECT MAX(CONVERT(INT, kode_walimurid)) as idmaks FROM walimurid

错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'INT, kode_walimurid)) 作为 idmaks FROM walimurid LIMIT 0, 25' 附近使用正确的语法

【问题讨论】:

  • 你可以制作 kode_walimurid 的子字符串并摆脱 WM 字符串,如果它总是相同的模式
  • @Qirel kode_walimurid 保留字在哪里??
  • @MatthiasBurger INT 是。
  • @Qirel 他想将该列转换为 int。 int 不是列名
  • @MatthiasBurger dev.mysql.com/doc/refman/5.7/en/… 手册中没有 INT,他遇到了一个错误就在INT

标签: php mysql sql


【解决方案1】:

如果您愿意,可以使用“静默”转换:

SELECT MAX(kode_walimurid + 0) as idmaks
FROM walimurid;

这种隐式转换不会返回错误,但总是会返回 0,因为字符串以非数字字符开头。

不过,您可能实际上想要从位置 3 开始的数字:

SELECT MAX(SUBSTR(kode_walimurid, 3) + 0) as idmaks
FROM walimurid;

这是 Rextester 上的 example

【讨论】:

  • 结果总是“0”
  • @ujang7654321ujang7654321。 . .这就是我提供第二种选择的原因。
  • 我尝试第二个选项.. 还是 0
  • @ujang7654321ujang7654321。 . .如果我在文本中说位置 3,我应该在代码中实现相同的。
  • 我应该使用 CAST 还是 CONVERT?但是使用它我仍然有同样的错误
【解决方案2】:

尝试使用CAST() mysql 功能检查这里function_cast
喜欢

SELECT MAX(CAST(kode_walimurid AS UNSIGNED)) as idmaks FROM walimurid

编辑:- 尝试使用用户定义功能检查this

【讨论】:

  • 结果“0”,我不知道为什么
  • 查看上述链接中的用户定义功能。
猜你喜欢
  • 2013-08-04
  • 2013-07-20
  • 2011-03-11
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
相关资源
最近更新 更多