2009-12-07 23 views
17

Uso de SQL Server 2005¿Cómo obtener solo valores numéricos de columna?

quiero conseguir sólo valores numéricos de la tabla

Columna1

12345 
asdf 
2312 
ase 
acd 
..., 

de consulta Probado

Select Isnumeric(column1) from table 

Mostrando resultado como

1 
0 
1 
0 
0 
.., 

necesito el valor numérico colum1

Necesidad de consultas de SQL Server ayudar

Respuesta

46
SELECT column1 FROM table WHERE ISNUMERIC(column1) = 1 

Nota, como Damien_The_Unbeliever has pointed out, esto incluirá cualquier valid numeric type.

para filtrar las columnas que contienen caracteres no numéricos (y cadenas vacías), se puede usar

SELECT column1 FROM table WHERE column1 not like '%[^0-9]%' and column1 != '' 
3

Trate de usar el WHERE cláusula:

SELECT column1 FROM table WHERE Isnumeric(column1); 
32

Las otras respuestas que indican el uso de IsNumeric en el where cláusula son correctas, hasta donde llegan, pero es importante recordar que devuelve 1 si el valor puede convertirse a cualquier tipo numérico. Como tal, las rarezas como "1d3" pasarán por el filtro.

Si necesita sólo valores compuesto por dígitos, buscar que explícitamente:

SELECT column1 FROM table WHERE column1 not like '%[^0-9]%' 

Lo anterior es el filtrado de rechazar cualquier columna que contiene un carácter no numérico

Tenga en cuenta que, en cualquier caso, Vas a incurrir en un escaneo de tabla, los índices son inútiles para este tipo de consulta.

+0

Tenga en cuenta que 'no me gusta '% [^ 0-9]%'' no filtra los valores en blanco. Si no desea incluir cadenas vacías, debe agregar una verificación adicional. – Olexa

0

Usar este [Probado]

SELECT column1 FROM table WHERE Isnumeric(column1)=1; //will return if value is numeric 


SELECT column1 FROM table WHERE Isnumeric(column1)=0; //will return if value is not numeric 
0
SELECT column1 FROM table WHERE column1 not like '%[0-9]%' 

Extracción de la '^' lo hizo por mí. Estoy viendo un campo varchar y cuando incluí el^excluía todos mis caracteres no numéricos, que es exactamente lo que no quería. Entonces, al eliminar^solo obtuve valores no numéricos.

Cuestiones relacionadas