我使用的是postgresql,我在制定正确的sql查询时遇到了问题。这个问题的标题听起来可能很奇怪,但这正是我想要达到的目标。我目前正在对一个特定的表执行数据管理。如果我有一个表产品包含:
id | designation
---------------------
1 | IR15A1021
2 | IR15A1001
3 | IR15A1050
4 | AB100
5 | AR100
我想做的是:
1)只获取其模式以“IR15A”开头的指定记录的整数子字符串。和by integer子字符串,表示起始字符串“IR15A”后面的数字。(102110011050)
2)在这种情况下得到最大整数子串:
maximum integer substring : 1050
因为所有其他IR15A的最大子串都小于它(1021和1001)。
假设条件正确。
1)IR15A后面的子串总是整数,所以不用担心类型,它总是整数。
2)忽略其他指定模式。只有IR15A。
我只是设法获得了'%1515%'通配符搜索,但我还没有找到任何解决方案,从中删除整数子串,并与其他人进行比较,以获得最大值。谢谢!
最佳答案
试试这个:
select max(cast(substring(designation from '....$') as int))
from tab
where designation like 'IR15A%'
使用
IR15A
只获取like 'IR15A%'
的行使用
IR15A
移除substring(designation from '....$')
。使用
cast
将其转换为int使用
max
获取max()
值Sql Fiddle演示