如何只获取数字列值?

时间:2009-12-07 09:35:16

标签: sql-server

使用SQL Server 2005

我想从表中只获取数值

列1

12345
asdf
2312
ase
acd
...,

尝试查询

Select Isnumeric(column1) from table

将结果显示为

1
0
1
0
0
..,

我需要colum1数值

需要SQL Server查询帮助

5 个答案:

答案 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字段,当我包含^时,它排除了我所有的非数字,这正是我不想要的。因此,通过删除^我只返回非数字值。

相关问题