2012-01-12 19 views
8

Ho bisogno di selezionare solo stringhe nella mia tabella, ma questa tabella ha numeri e stringhe insieme.Selezionare solo stringa con numero SQL Server

Es:

ID Name 
1 Jacke11 
2 Andre 
3 Rodrigo11 
4 55555 

miei selezionare bisogno di ritorno solo Ids: 1, 2, 3.

Grazie

+0

Eh, l'ID è davvero una colonna separata e il nome di una colonna separata? –

+0

se la selezione deve restituire solo 1, 2, 3, sono necessari solo numeri interi dalla tabella. È separato da spazi? –

risposta

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

Penso di sapere perché, ma puoi commentare perché stai facendo '+ '.0e0'' perché non penso che sia molto intuitivo averne bisogno. – Yuck

+1

@Yuck - Perché è possibile ottenere corrispondenze impreviste con 'ISNUMERIC' poiché valuterà 'TRUE' per tipi di dati non-int come float (anche denaro e alcuni simboli). '12e10' passerà' ISNUMERIC' come 'TRUE'. Aggiungendo '.0e0' si forza a controllare solo i valori interi. – JNK

+1

@Yuck: senza che ISNUMERIC restituisca un 1 per cose come '+' e '$'. –

5

In alternativa al molto fine la soluzione di Joe ISNUMERIC, è possibile utilizzare PATINDEX per assicurarsi di disporre di un carattere alfa:

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

Questo potrebbe essere leggermente più veloce poiché smetterà di cercare la stringa non appena arriva al primo carattere alfa.

Problemi correlati