2013-09-24 2 views
0

J'ai un ensemble de données en tant que varchar (500), mais je sais seulement s'il s'agit d'un caractère numérique ou d'un caractère.Comptage des espaces avant et après un point décimal

J'ai besoin de compter les espaces max de la longueur d'une colonne ET les espaces max après un point décimal.

Par exemple:

ColumnA 
1234.56789 
123.4567890 

retourneraient 11 places au total et 7 espaces après la virgule.

Il peut s'agir de deux requêtes distinctes.

+0

Uhm, 'LEN()'? Avez-vous essayé de faire votre propre recherche? Quels sont ses résultats? – zerkms

+0

les espaces ou les caractères? –

Répondre

2
SELECT LEN(ColumnA) 
     ,CHARINDEX('.',REVERSE(ColumnA))-1 
FROM Table1 

Si une valeur n'a pas décimale, la volonté au-dessus de retour -1 pour les espaces après la virgule, de sorte que vous pouvez utiliser:

SELECT LEN(ColumnA) 
     ,CASE WHEN ColumnA LIKE '%.%' THEN CHARINDEX('.',REVERSE(ColumnA))-1 
      ELSE 0 
     END 
FROM Table1 

Demo des deux: SQL Fiddle

Si vous vouliez juste le MAX() alors vous devriez simplement envelopper ce qui précède dans MAX():

SELECT MAX(LEN(ColumnA)) 
     ,MAX(CHARINDEX('.',REVERSE(ColumnA))-1) 
FROM Table1 
3
SELECT len(ColumnA), len(columnA) - charIndex('.',ColumnA) 
FROM theTable 
+1

Remarque: S'il n'y a pas de décimale, la longueur sera retournée dans les deux champs. –

0
SELECT ColumnA, Len(ColumnA) As Total, LEN(SUBSTRING(ColumnA,CHARINDEX('.',ColumnA,LEN(ColumnA)) As Decimal 
FROM TABLE 
Questions connexes