2010-01-10 5 views
1

Comment obtenir une valeur valide de la requête suivanterequête pour le traitement valide numérique

SELECT Answer FROM table 
WHERE values LIKE '%[^0-9]%' 

Fondamentalement, je veux que les données peuvent traiter pour

  1. 28.000 (valide)
  2. 20000 $ (valide)
  3. Montant annuel (non valide)
  4. ? (Invalide)
  5. 28,00 (valide)

Merci

+1

La colonne 'values' est de type char/varchar yea? Si oui, il s'agit plus d'une question regex. –

+2

Je pense que vous allez devoir être un peu plus précis quant à ce que vous entendez par valide et invalide. Cherchez-vous quelque chose qui peut être interprété comme une valeur décimale sans unité au format américain, ou bien un montant en dollars américains, sans texte supplémentaire? –

Répondre

1
SELECT Answer 
FROM table 
WHERE 
    ISNUMERIC(values) 
    OR (
     SUBSTRING(values, 1, 1) = '$' 
     AND ISNUMERIC(RIGHT(values, LEN(values) - 1))) 
1

vous pourriez faire quelque chose comme:

select replace(replace(values, '$', ''), ',', '') as number from table 
    where dbo.RegexMatch(values, ^\$?(\d+|(\d{1,3}(,\d{3})+))(\.\d+)?$') 

tweak l'expression régulière pour correspondre aux conditions dont vous avez besoin ...

Questions connexes