2013-07-24 2 views
1

J'ai créé une requête (voir ci-dessous) mais, au lieu d'avoir un retour de "supérieur à 20 ou 30", je veux que ma requête affiche réellement le nombre (par exemple 31, 35, 50, etc.). Je n'arrive pas à comprendre comment le faire. Merci pour l'aide.Longueur du caractère SQL Server 2005

select 
cc_units_of_measure.description as UOM_Description, 
case when LEN(cc_units_of_measure.description) < 20 then 'OK' 
else 'Greater than 20' 
end as Results_UOM_description, 
cc_units_of_measure.company_abbreviation as UOM_Company_Abbreviation, 
case when LEN(cc_units_of_measure.company_abbreviation) < 20 then 'OK' 
else 'Greater than 20' 
end as Results_UOM_company_abbreviation, 
cc_frequencies.description as Freq_Description, 
case when LEN(cc_frequencies.description) < 30 then 'OK' 
else 'Greater than 30' 
end as Results_Frequency_description 
from cc_units_of_measure, cc_frequencies 
+0

par le comte vous dire la longueur des caractères? – Vasanth

+0

Essayez de choisir 'Sum (cas où Len (cc_units_of_measure.description) <20 puis 1 sinon 0 fin) comme [UOM_LT20], ...'. – HABO

+0

Est-ce la longueur ou le nombre? En outre, votre "else" doit être "égal ou supérieur à xx" – Elmer

Répondre

1

Si vous changez la partie else des déclarations de cas pour retourner la longueur que vous obtiendrez la valeur que vous cherchez comme ceci:

SELECT cc_units_of_measure.description AS UOM_Description , 
     CASE WHEN LEN(cc_units_of_measure.description) < 20 THEN 'OK' 
      ELSE LEN(cc_units_of_measure.description) 
     END AS Results_UOM_description , 
     cc_units_of_measure.company_abbreviation AS UOM_Company_Abbreviation , 
     CASE WHEN LEN(cc_units_of_measure.company_abbreviation) < 20 THEN 'OK' 
      ELSE LEN(cc_units_of_measure.company_abbreviation) 
     END AS Results_UOM_company_abbreviation , 
     cc_frequencies.description AS Freq_Description , 
     CASE WHEN LEN(cc_frequencies.description) < 30 THEN 'OK' 
      ELSE LEN(cc_frequencies.description) 
     END AS Results_Frequency_description 
FROM cc_units_of_measure , 
     cc_frequencies 
+0

J'ai essayé ceci mais ai fini avec une erreur: Msg 245, niveau 16, état 1, ligne 1 La conversion a échoué en convertissant la valeur de varchar 'OK' au type de données int. – user2612714