0
votes

Obtenez le chiffre de valeur la plus élevée dans une chaîne

Je voudrais demander comment je peux obtenir ce chiffre de valeur la plus élevée dans la chaîne:

  • E.G 012590 Le résultat est de 9
  • E.G 012345 Le résultat est de 5
  • E.G 12340781 Le résultat est de 8

4 commentaires

Explique ce que tu veux dire, s'il te plait. Le 7 n'est tout simplement pas évident.


Soyez bon de voir ce que vous avez essayé et où vous êtes coincé.


Je note que vous n'avez pas accepté de réponse sur vos précédentes questions - veuillez lire accepter une réponse comme c'est la façon dont les choses sont les choses devrait travailler sur ce site.


Désolé ça devrait être 8


3 Réponses :


5
votes

En supposant que vous souhaitez que le chiffre de valeur le plus élevé de la chaîne, alors la méthode la plus simple est probablement la force brute d'un big ESPOW CODE> Expression:

select (case when col like '%9%' then 9
             when col like '%8%' then 8
             when col like '%7%' then 7
             when col like '%6%' then 6
             when col like '%5%' then 5
             when col like '%4%' then 4
             when col like '%3%' then 3
             when col like '%2%' then 2
             when col like '%1%' then 1
             when col like '%0%' then 0
        end)


0 commentaires

1
votes

Vous pouvez également utiliser Charindex:

select (case when CHARINDEX('9', stringvalue) > 0 then 9
             when CHARINDEX('8', stringvalue) > 0 then 8
             when CHARINDEX('7', stringvalue) > 0 then 7
             when CHARINDEX('6', stringvalue) > 0 then 6
             when CHARINDEX('5', stringvalue) > 0 then 5
             when CHARINDEX('4', stringvalue) > 0 then 4
             when CHARINDEX('3', stringvalue) > 0 then 3
             when CHARINDEX('2', stringvalue) > 0 then 2
             when CHARINDEX('1', stringvalue) > 0 then 1
             when CHARINDEX('0', stringvalue) > 0 then 0
        end)


0 commentaires

0
votes

Vous pouvez utiliser Master..spt_values ​​pour atteindre ce retour:

DECLARE @STRING NVARCHAR(MAX)='012546987';

SELECT MAX(SUBSTRING(A.B, V.NUMBER+1, 1)) 
FROM (SELECT @STRING B) A
JOIN MASTER..SPT_VALUES V ON V.NUMBER < LEN(A.B)
WHERE V.TYPE = 'P'


0 commentaires