使用SQL Server 2005
我想从表中只获取数值
列1
12345
asdf
2312
ase
acd
...,
尝试查询
Select Isnumeric(column1) from table
将结果显示为
1
0
1
0
0
..,
我需要colum1数值
需要SQL Server查询帮助
答案 0 :(得分:54)
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 != ''
答案 1 :(得分:34)
表明在where子句中使用IsNumeric的其他答案是正确的,但是重要的是要记住,如果值可以转换为任何数字类型,则返回1。因此,诸如“1d3”之类的奇怪将使其通过过滤器。
如果您只需要由数字组成的值,请明确搜索:
SELECT column1 FROM table WHERE column1 not like '%[^0-9]%'
以上是过滤以拒绝任何包含非数字字符的列
请注意,在任何情况下,您都会进行表扫描,索引对于此类查询无用。
答案 2 :(得分:3)
尝试使用WHERE
子句:
SELECT column1 FROM table WHERE Isnumeric(column1);
答案 3 :(得分:1)
使用此[已测试]
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
答案 4 :(得分:0)
SELECT column1 FROM table WHERE column1 not like '%[0-9]%'
删除' ^'为我做了我正在查看varchar字段,当我包含^时,它排除了我所有的非数字,这正是我不想要的。因此,通过删除^我只返回非数字值。