2009-12-07 46 views
17

Sử dụng SQL Server 2005Làm cách nào để chỉ nhận giá trị cột số?

Tôi muốn nhận được chỉ giá trị số từ bảng

COLUMN1

12345 
asdf 
2312 
ase 
acd 
..., 

thử Query

Select Isnumeric(column1) from table 

Hiển thị kết quả như

1 
0 
1 
0 
0 
.., 

tôi cần những giá trị số colum1

Cần SQL Server Query giúp

Trả lời

46
SELECT column1 FROM table WHERE ISNUMERIC(column1) = 1 

Note, như Damien_The_Unbeliever has pointed out, điều này sẽ bao gồm bất kỳ valid numeric type.

Để lọc ra các cột chứa các ký tự không chữ số (và chuỗi rỗng), bạn có thể sử dụng

SELECT column1 FROM table WHERE column1 not like '%[^0-9]%' and column1 != '' 
3

Hãy thử sử dụng WHERE khoản:

SELECT column1 FROM table WHERE Isnumeric(column1); 
32

Những câu trả lời khác chỉ ra sử dụng IsNumeric trong mệnh đề where là đúng, theo như chúng đi, nhưng điều quan trọng cần nhớ là nó trả về 1 nếu giá trị có thể được chuyển đổi thành bất kỳ loại số nào. Như vậy, các kỳ quặc như "1d3" sẽ làm cho nó thông qua bộ lọc.

Nếu bạn chỉ cần giá trị bao gồm chữ số, tìm kiếm cho rằng rõ ràng:

SELECT column1 FROM table WHERE column1 not like '%[^0-9]%' 

Ở trên là lọc từ chối bất kỳ cột, trong đó có một nhân vật phi chữ số

Lưu ý rằng trong mọi trường hợp, bạn sẽ phải trải qua một lần quét bảng, các chỉ mục là vô dụng đối với loại truy vấn này.

+0

Lưu ý rằng 'không thích '% [^ 0-9]%'' không lọc ra các giá trị trống. Nếu bạn không muốn bao gồm các chuỗi rỗng, bạn cần thêm kiểm tra bổ sung. – Olexa

0

Sử dụng này [Tested]

SELECT column1 FROM table WHERE Isnumeric(column1)=1; //will return if value is numeric 


SELECT column1 FROM table WHERE Isnumeric(column1)=0; //will return if value is not numeric 
0
SELECT column1 FROM table WHERE column1 not like '%[0-9]%' 

Loại bỏ các '^' đã làm nó cho tôi. Tôi đang nhìn vào một lĩnh vực varchar và khi tôi bao gồm^nó loại trừ tất cả các số phi của tôi mà là chính xác những gì tôi không muốn. Vì vậy, bằng cách xóa^tôi chỉ nhận được các giá trị không phải là số.

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