J'ai un dB qui a un champ numérique et j'ai besoin de rechercher toutes les lignes et de ne renvoyer que les nombres non entiers.
J'ai essayé la requête ci-dessous et conserve des enregistrements de rétroaction qui ont 0. P>
5 Réponses :
Vous pouvez utiliser uniquement avec des champs de caractères, pas avec le nombre (entier ou float).
si par "Nombres entiers", vous voulez dire 0,0, 2.0, -5.0, etc. et non 12,5, 0,67, 0,67, puis ce peut DO: P>
SELECT li.QTY FROM TABLE LI WHERE li.QTY != FLOOR(li.QTY) ;
Cela exact sauf qu'il veut sans nombre total b>. Il suffit de changer votre = code> sur
<> code>. Il pourrait faire exactement la même logique en utilisant
rond code> et
comme int code> ... juste comprendre ce qui est le plus rapide!
À la recherche d'un nombre avec une décimale
Oui, thnx. Les fonctions rondes et de plafond fonctionneraient les mêmes ici. Je ne sais pas si je me faisais comme INT serait plus rapide, probablement pas.
@ypercube, donc étage code> ... Je parie que l'un d'eux dépend d'une autre cependant. Il devrait simplement tester pour voir ce qui est le plus rapide pour son jeu de données.
ypercube - vous peut utiliser b> comme avec des données numériques. Tant que vous savez ce que vous faites.
À propos de la distribution comme INT, je pensais juste que cela ne fonctionnerait peut-être pas dans certains cas. Cela dépendrait de la précision de l'INT et du nombre converti.
pourquoi il fait Considérez cette instruction SQL P> SELECT li.QTY, CONVERT(varchar, li.qty)
FROM TBL LI
WHERE li.QTY LIKE '%.%[^0]%'
--Most Def...Cast as an int...Save you from validation of anything. Especially for conversions of dates into a whole date since Microsoft does not like a round down date function. --For example: --For every 300 hours an employee works they receive 1 whole day of vacation --partial days of vacation will not be counted Declare @SumHours as decimal(38,10), @VacationValidation as int Set @SumHours = 3121.30000000000000000000 Set @VacationValidation = 300 Select cast(((@SumHours)/(@VacationValidation)) as int) Select day(((@SumHours)/(@VacationValidation))) -1 --without casting as an int, I would need to validated the Day function to make sure that I'm not --offsetting a whole day by one day.
fonction de fonction de distribution pour moi.
SELECT li.QTY FROM TABLE LI WHERE li.QTY != CAST(li.QTY AS INTEGER)
déclarer @Value comme flotteur p>
SET @Value = 250.00 P>
cas lorsque Charindex ('.', (fonte (b.value/@value comme char))) = 0 alors 'wholenumber' sinon 'fraction' fin comme mrésult p>
S'il vous plaît, ne postez pas de réponses sur le code seulement. Les futurs lecteurs seront reconnaissants de voir expliquer pourquoi i> répond à la question au lieu de deviner de voir le code. En outre, lorsque vous répondez à de vieilles questions, vous devez indiquer comment la réponse améliore les réponses existantes. Cela dit, franchement je me demande comment i> cela répond à la question. En outre, ce n'est pas une syntaxe correcte.
Désolé, je mets à Varchari, j'ai laissé de côté de l'exemple
Voici une question connexe ... Appliquez simplement ces pratiques avec le
<> code> à votre colonne: Stackoverflow.com/Questions/44046/...