2012-01-12 40 views
8

numaralı yalnızca dize seçin Tablodaki yalnızca dizeleri seçmem gerekiyor, ancak bu tablonun sayıları ve dizeleri birlikte var.SQL Server

Ör:

ID Name 
1 Jacke11 
2 Andre 
3 Rodrigo11 
4 55555 

Benim seçme sadece kimlikleri iade gerek: 1, 2, 3.

Teşekkür Joe'nun çok ince ISNUMERIC çözümüne bir alternatif yapabilirsiniz gibi

+0

Eh, gerçekten ayrı bir sütun ve ayrı bir sütun adı mı? –

+0

Seçtiğiniz sadece 1, 2, 3 döndürmeniz gerekiyorsa, yalnızca tablodan tam sayılara ihtiyacınız vardır. Boşluklarla mı ayrılmış? –

cevap

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

Sanırım nedenini biliyorum, ama neden + + .0e0 'yaptığınızı yorumlayabiliyorsunuz, çünkü bunun çok sezgisel olduğunu düşünmüyorum. – Yuck

+1

@Yuck - “ISNUMERIC” ile beklenmedik eşleşmeler elde edebileceğinizden, “DOĞRU”, float (ayrıca para ve bazı semboller) gibi int-int veri türleri için değerlendirecektir. '12e10'' ISNUMERIC'' 'DOĞRU' olarak geçecektir. '.0e0' ekleyerek, yalnızca tamsayı değerlerini denetlemek için zorlarsınız. – JNK

+1

@Yuck: Bu ISNUMERIC, "+" ve "$" gibi şeyler için 1 döndürür. –

5

SELECT ID 
    FROM YourTable 
    WHERE PATINDEX('%[a-z]%', name) > 0 
01 için bir PATINDEX numaralı telefonu kullanın.

Bu, ilk alfa karakterine ulaşır ulaşmaz dizeyi aramayı durduracağı için biraz daha hızlı olabilir.