使用SQL Server 2005如何只獲取數字列值?
我想從表中只得到數值
列1
12345
asdf
2312
ase
acd
...,
試圖查詢
Select Isnumeric(column1) from table
顯示結果爲
1
0
1
0
0
..,
我需要colum1數值
需要SQL Server查詢幫助
使用SQL Server 2005如何只獲取數字列值?
我想從表中只得到數值
列1
12345
asdf
2312
ase
acd
...,
試圖查詢
Select Isnumeric(column1) from table
顯示結果爲
1
0
1
0
0
..,
我需要colum1數值
需要SQL Server查詢幫助
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 != ''
嘗試使用WHERE
子句:
SELECT column1 FROM table WHERE Isnumeric(column1);
其他的答案顯示在使用則IsNumeric where子句是正確的,只要他們去,但重要的是要記住它返回1,如果該值可以轉換爲任何數字類型。因此,諸如「1d3」之類的怪事將通過過濾器。
如果您只需要數字組成的值,搜索明確:
SELECT column1 FROM table WHERE column1 not like '%[^0-9]%'
以上的篩選來拒絕它包含一個非數字字符
注意任何列,在任何情況下,你會發生表掃描,索引對於這種查詢是無用的。
使用此[測試]
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
SELECT column1 FROM table WHERE column1 not like '%[0-9]%'
刪除 '^' 爲我做。我正在查看一個varchar字段,當我包含^時,它排除了所有非數字,這正是我不想要的。所以,通過刪除^我只有非數字值返回。
請注意'不喜歡'%[^ 0-9]%''不會過濾出空白值。如果您不想包含空字符串,則需要添加額外的檢查。 – Olexa 2014-09-09 10:01:55