2017-08-29 57 views
0

下面我使用select語句中的max屬性內的子串索引從列中獲取最大值。但是,下面的代碼在第二短劃線之後對單個數字正常工作,但它不會在第二短劃線後檢索兩位數值的值。如何檢索第二個連字符後使用mysql select查詢

下面是什麼我使用存儲在列

select max(SUBSTRING_INDEX(pid,"-",-1)) from patient; 

值查詢是圖案的如下所示

P-29082017-1, 
P-29082017-2, 
... 
P-29082017-9, 
P-29082017-10 

上述查詢只返回單個數字,I,E,如果我有10條目說1到10列PID列,價值我回來從上面的查詢是9而不是10

請建議我去哪裏錯了查詢

+0

@Jens我不認爲OQ在任何給定的行中有多於一個這樣的「P-29082017-10」字符串。 –

+0

@ O.Jones你很舒服嗎?爲什麼最後的逗號?但也許只有不好的格式 – Jens

回答

1

我認爲你的max()函數正在字符串上下文而不是數值上下文中進行評估。在字符串上下文中,9出現在10之後。

所以試試這個。它會將SUBSTRING()輸出轉換爲數字。

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

他也可以嘗試'DECIMAL'。 –

+0

十進制解決了我! – coder12345

相關問題