2012-01-12 15 views
8

Tôi chỉ cần chọn chuỗi trong bảng của mình, nhưng bảng này có số và chuỗi với nhau.Chỉ chọn chuỗi có số SQL Server

Ex:

ID Name 
1 Jacke11 
2 Andre 
3 Rodrigo11 
4 55555 

tôi chọn cần quay trở về chỉ Id: 1, 2, 3.

Cảm ơn

+0

Eh, id có thực sự là một cột riêng biệt và đặt tên cho một cột riêng biệt không? –

+0

nếu lựa chọn của bạn chỉ cần trả về 1, 2, 3, bạn chỉ cần số nguyên từ bảng. Được phân tách bằng dấu cách? –

Trả lời

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

Tôi nghĩ rằng tôi biết tại sao, nhưng bạn có thể bình luận về lý do tại sao bạn đang làm '+ '.0e0'' vì tôi không nghĩ rằng nó rất trực quan để cần điều đó. – Yuck

+1

@Yuck - Vì bạn có thể nhận được các kết quả không mong muốn với 'ISNUMERIC' vì nó sẽ đánh giá' TRUE' cho các kiểu dữ liệu không phải int như float (cũng tiền và một số ký hiệu). '12e10' sẽ chuyển' ISNUMERIC' thành 'TRUE'. Bằng cách thêm '.0e0', bạn buộc nó chỉ kiểm tra các giá trị số nguyên. – JNK

+1

@Yuck: Nếu không có ISNUMERIC đó sẽ trả về 1 cho những thứ như '+' và '$'. –

5

Để thay thế cho giải pháp rất tốt ISNUMERIC của Joe, bạn có thể sử dụng PATINDEX để đảm bảo bạn có ký tự alpha:

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

Điều này có thể nhanh hơn một chút vì nó sẽ ngừng tìm kiếm chuỗi ngay khi nó đến ký tự alpha đầu tiên.

Các vấn đề liên quan