Sélectionnez en fonction de la fin de chaîne - sql, oracle, oracle11g

Dans ma base de données, je stocke différents numéros de version, comme suit:

OBJNAME
Fix_6.0.0a.1
Fix_6.0.0a.2

Je voudrais les trier pas selon l'élément de la dernière version (le nombre derrière le dernier . personnage. Comment écrire une telle instruction SQL?

Je suppose que c'est quelque chose comme:

  SELECT SUBSTR(INSTR(OBJNAME, ".", -1)) as LAST_VERSION, OBJNAME
FROM MY_TABLE
ORDER BY LAST_VERSION

Mais quelle est la syntaxe exacte?

Réponses:

1 pour la réponse № 1

La bonne version est

select TO_NUMBER(SUBSTR(OBJNAME,INSTR(OBJNAME,".",-1)+1,LENGTH(OBJNAME))) as LAST_VERSION, OBJNAME from MY_TABLE order by LAST_VERSION

0 pour la réponse № 2

i dont know which sql-software you are using, but Vous devriez jeter un coup d'oeil aux substr et aux paramètres d'instrument. dans votre cas, vous passez 3 paramètres à instr et 1 paramètre dans substr. mais les substrats nécessitent normalement plus. Insérez des blancs pour avoir un aperçu de votre instruction, en particulier pour les substrats .... en tant que LAST_VERSION. alors vous verrez. mauvais nombre de paramètres.


questions connexes
Menu