如何使用mysql选择查询在第二个连字符后检索值

时间:2017-08-29 11:47:11

标签: mysql

下面我在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

请告知我查询错误的地方

1 个答案:

答案 0 :(得分:1)

我认为你的max()函数正在字符串上下文而不是数字上下文中进行评估。在字符串上下文中,9位于10之后。

试试这个。它会将SUBSTRING()输出转换为数字。

 SELECT MAX(CAST(SUBSTRING_INDEX(pid,'-',-1) AS INT))