2011-04-26 17 views
11

Básicamente me gustaría una instrucción select que funcionarían como esto¿Hay una condición SQL que pueda buscar números enteros en una columna?

SELECT * 
FROM table 
WHERE column IS NOT INT 

¿Hay una condición como tal o ¿cómo comprobar si no enteros en una (10) de la columna nvarchar?

+0

He eliminado mi respuesta, ya que estaba mal ... –

+0

= (pero al menos tienes 30 en la puntuación =) – Niklas

+0

¿Se considera ''42 .0'' un número entero? – Quassnoi

Respuesta

13

En SQL Server que puede hacer:

SELECT * 
FROM mytable 
WHERE CASE WHEN IsNumeric(mycolumn) = 1 THEN CASE WHEN CAST(mycolumn AS FLOAT) <> CAST(CAST(mycolumn AS FLOAT) AS INT) THEN 1 END ELSE 1 END = 1 
+0

Lo siento, quiero decir que recibo este error: 'Una expresión de tipo no booleano especificado en un contexto donde se espera una condición, cerca de 'END'.' – Niklas

+0

@Niklas: consulte la actualización de la publicación. – Quassnoi

+0

¡Eso lo hizo, genial! – Niklas

7

También es posible usar

SELECT * 
FROM T 
WHERE C = '' 
     OR C LIKE '%[^0-9-]%' /*Contains a char other than - or 0-9*/ 
     OR C LIKE '_%-%' /*Contains the - char other than 1st position*/ 
+0

Necesito excluir campos de longitud cero, también creo –

+0

Es difícil elegir una respuesta correcta aquí. El suyo funcionará en mi caso específico, pero Quassnoi cubre un rango más amplio =/ – Niklas

+0

Iría por Quassnoi, ya que es más general. ¡Extender el 'LIKE' para cubrir todos los casos probablemente lo haría un poco más intrincado! –

Cuestiones relacionadas