2009-09-13 6 views
2

J'ai une colonne varchar qui a des données comme celui-ciconclusion max dans une base MySQL lorsque la colonne est varchar

top<somenumber> 

de sorte que le mot « top » suivi par des chiffres. J'essaie d'insérer un enregistrement dans ce tableau et j'essaie de trouver quelle est la prochaine valeur qui devrait entrer.

Y at-il de toute façon que je peux trouver la valeur maximale pour cette colonne?

peut-être quelque chose comme ça?

select * from catalog ORDER BY CAST(`catalogid` AS DECIMAL(10,2)) DESC limit1; 

Comment puis-je mouler la requête ci-dessus pour tenir compte des chiffres suivis de « top »

Répondre

3

Eh bien, génériquement, vous pouvez utiliser max:

select 
    max(catalogid) 
from 
    catalog 

Cependant, ici nous avons un peu de plaisir iss où nous devons ue pour enlever top:

select 
    max(cast(substring(catalogid, 4) as decimal(10,2))) as maxid 
from 
    catalog 

Vous voyez, ici, nous utilisons substring de limiter le champ catalogid être juste le nombre.

En outre, vous voudrez peut-être vérifier aggregate functions, car ils peuvent être très pratique!

2

S'il est toujours « top [N] », et que vous voulez max N, vous pouvez essayer:

SELECT MAX(CAST(SUBSTR(`catalogid`,4) AS DECIMAL(10,2)) ... 
Questions connexes