如何只获取数字列值?

Gop*_*pal 22 sql-server

使用SQL Server 2005

我想从表中只获取数值

列1

12345
asdf
2312
ase
acd
...,
Run Code Online (Sandbox Code Playgroud)

尝试查询

Select Isnumeric(column1) from table
Run Code Online (Sandbox Code Playgroud)

显示结果为

1
0
1
0
0
..,
Run Code Online (Sandbox Code Playgroud)

我需要colum1数值

需要SQL Server查询帮助

Bre*_*dán 55

SELECT column1 FROM table WHERE ISNUMERIC(column1) = 1
Run Code Online (Sandbox Code Playgroud)

请注意,正如Damien_The_Unbeliever所指出的,这将包括任何有效的数字类型.

要过滤掉包含非数字字符(和空字符串)的列,您可以使用

SELECT column1 FROM table WHERE column1 not like '%[^0-9]%' and column1 != ''
Run Code Online (Sandbox Code Playgroud)


Dam*_*ver 34

其他答案表明在where子句中使用IsNumeric是正确的,只要它们去,但重要的是要记住,如果值可以转换为任何数字类型,它返回1 .因此,诸如"1d3"的奇怪将使其通过滤波器.

如果您只需要由数字组成的值,请显式搜索:

SELECT column1 FROM table WHERE column1 not like '%[^0-9]%'
Run Code Online (Sandbox Code Playgroud)

以上是过滤以拒绝任何包含非数字字符的列

请注意,在任何情况下,您都会进行表扫描,索引对于这种查询是无用的.

  • 请注意,`not like '%[^0-9]%'` 不会过滤掉空白值。如果您不想包含空字符串,则需要添加额外的检查。 (3认同)