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
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
SELECT ID
FROM YourTable
WHERE ISNUMERIC(Name + '.0e0') = 0
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
@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
@Yuck: Nếu không có ISNUMERIC đó sẽ trả về 1 cho những thứ như '+' và '$'. –
Để 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.
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? –
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? –