how to select max of mixed string/int column?(如何选择混合字符串/整数列的最大值?)
问题描述
假设我有一个包含发票编号列的表,数据类型是 VARCHAR,混合字符串/整数值,例如:
Lets say that I have a table which contains a column for invoice number, the data type is VARCHAR with mixed string/int values like:
invoice_number
**************
HKL1
HKL2
HKL3
.....
HKL12
HKL13
HKL14
HKL15
我尝试选择最大值,但它返回HKL9",而不是最高值HKL15".
I tried to select max of it, but it returns with "HKL9", not the highest value "HKL15".
SELECT MAX( invoice_number )
FROM `invoice_header`
推荐答案
HKL9 (string) 大于 HKL15,因为它们是作为字符串比较的.解决您的问题的一种方法是定义一个列函数,该函数仅返回发票编号的数字部分.
HKL9 (string) is greater than HKL15, because they are compared as strings. One way to deal with your problem is to define a column function that returns only the numeric part of the invoice number.
如果您的所有发票编号都以 HKL 开头,那么您可以使用:
If all your invoice numbers start with HKL, then you can use:
SELECT MAX(CAST(SUBSTRING(invoice_number, 4, length(invoice_number)-3) AS UNSIGNED)) FROM table
它取invoice_number,不包括前3个字符,转换为int,并从中选择max.
It takes the invoice_number excluding the 3 first characters, converts to int, and selects max from it.
这篇关于如何选择混合字符串/整数列的最大值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何选择混合字符串/整数列的最大值?
基础教程推荐
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- SQL 效率:WHERE IN 子查询 vs. JOIN 然后 GROUP 2021-01-01
- 无法解决整理冲突 2021-01-01
- 如何使用 mysql.connector 禁用查询缓存 2022-01-01
- SQL:使用来自具有相同列名的两个表中的数据... 2021-01-01
- 将 SQL Server DateTime 列迁移到 DateTimeOffset 2021-01-01
- 是否可以执行按位分组功能? 2021-01-01
- 在 SQL 中连接多个表 2021-01-01
- 需要 MySQL 5.1 中的抽象触发器来更新审计日志 2021-01-01
- SQL Server 实例在登录协商期间返回无效或不受支持的协议版本 2021-01-01
