2009-12-07 42 views
17

使用SQL Server 2005如何只獲取數字列值?

我想從表中只得到數值

列1

12345 
asdf 
2312 
ase 
acd 
..., 

試圖查詢

Select Isnumeric(column1) from table 

顯示結果爲

1 
0 
1 
0 
0 
.., 

我需要colum1數值

需要SQL Server查詢幫助

回答

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

注意,因爲Damien_The_Unbeliever has pointed out,這將包括任何valid numeric type

用於過濾掉含非數字字符(空字符串)列,你可以使用

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

嘗試使用WHERE子句:

SELECT column1 FROM table WHERE Isnumeric(column1); 
32

其他的答案顯示在使用則IsNumeric where子句是正確的,只要他們去,但重要的是要記住它返回1,如果該值可以轉換爲任何數字類型。因此,諸如「1d3」之類的怪事將通過過濾器。

如果您只需要數字組成的值,搜索明確:

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

以上的篩選來拒絕它包含一個非數字字符

注意任何列,在任何情況下,你會發生表掃描,索引對於這種查詢是無用的。

+0

請注意'不喜歡'%[^ 0-9]%''不會過濾出空白值。如果您不想包含空字符串,則需要添加額外的檢查。 – Olexa 2014-09-09 10:01:55

0

使用此[測試]

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]%' 

刪除 '^' 爲我做。我正在查看一個varchar字段,當我包含^時,它排除了所有非數字,這正是我不想要的。所以,通過刪除^我只有非數字值返回。