下面我在select语句的max属性中使用substring index来获取列的最大值。但是下面的代码在第二个破折号之后适用于单个数字,但在第二个破折号后它不会检索双位数值。
以下是我正在使用的查询
select max(SUBSTRING_INDEX(pid,"-",-1)) from patient;
存储在列中的值具有如下所示的模式
P-29082017-1,
P-29082017-2,
...
P-29082017-9,
P-29082017-10
上面的查询只返回单个数字,i,e如果我有10个条目说pid从1到10列在列中,我从上面的查询返回的值是9而不是10
请告知我查询错误的地方
答案 0 :(得分:1)
我认为你的max()
函数正在字符串上下文而不是数字上下文中进行评估。在字符串上下文中,9
位于10
之后。
试试这个。它会将SUBSTRING()
输出转换为数字。
SELECT MAX(CAST(SUBSTRING_INDEX(pid,'-',-1) AS INT))