2012-01-12 21 views
8

Necesito seleccionar solo cadenas en mi tabla, pero esta tabla tiene números y cadenas juntas.Seleccionar solo una cadena con el número SQL Server

Ex:

ID Name 
1 Jacke11 
2 Andre 
3 Rodrigo11 
4 55555 

Mi Selecto necesita vuelta sólo ID: 1, 2, 3.

Gracias

+0

Eh, ¿es id realmente una columna separada y nombre una columna separada? –

+0

si su selección necesita devolver solo 1, 2, 3, solo necesita enteros de la tabla. Está separado por espacios? –

Respuesta

17
SELECT ID 
    FROM YourTable 
    WHERE ISNUMERIC(Name + '.0e0') = 0 
+2

Creo que sé por qué, pero puedes comentar por qué estás haciendo '+ '.0e0'' ya que no creo que sea muy intuitivo. – Yuck

+1

@Yuck - Porque puede obtener coincidencias inesperadas con 'ISNUMERIC' ya que evaluará' TRUE' para tipos de datos no-int como float (también dinero y algunos símbolos). '12e10' pasará' ISNUMERIC' como 'TRUE'. Al agregar '.0e0' lo fuerza a verificar solo valores enteros. – JNK

+1

@Yuck: Sin eso, ISNUMERIC devolverá un 1 para cosas tales como '+' y '$'. –

5

Como alternativa a la solución muy fina ISNUMERIC de Joe, que pueda use PATINDEX para asegurarse de tener un carácter alfabético:

SELECT ID 
    FROM YourTable 
    WHERE PATINDEX('%[a-z]%', name) > 0 

Esto puede ser un poco más rápido ya que dejará de buscar la cadena tan pronto como llegue al primer carácter alfabético.

Cuestiones relacionadas