如何只选择列中包含数字的记录(SQL)

时间:2011-03-09 19:30:46

标签: sql sql-server

基本上我想这样做:

我想返回一个记录集,如果它包含一个数字,则将一个nvarchar值(ID)转换为整数。如果ID可以转换为数字,则将该行添加到SELECT记录集。如果没有,请跳过该行。

我认为SQL看起来应该是这样的。

(ID在dbo中是nvarchar(10)。表)

CREATE TABLE #Temp  (ID int)
INSERT INTO #Temp SELECT ID FROM Table Where ISNumeric(Id)=0

但是我得到一个错误:nvarchar值'Default'到数据类型int。如果我做SELECT CAST(ID as int)也不起作用。

3 个答案:

答案 0 :(得分:13)

为了安全起见,忘掉ISNUMERIC

如果您不期待负数,可以使用此

INSERT INTO #Temp SELECT ID FROM Table
Where Id > ''  -- is not the empty string and is not null
  AND not ID like '%[^0-9]%'  -- contains digits only

答案 1 :(得分:9)

ISNumeric(Id)=0应为ISNumeric(Id)=1

然而ISNUMERIC有问题

运行此

SELECT ISNUMERIC('2d5'), ISNUMERIC('-'), ISNUMERIC('+')

那些都返回1

查看IsNumeric, IsInt, IsNumber以了解某些方法是否可以转换为整数

答案 2 :(得分:-1)

也许这个可以提供帮助:

select column_desired from requested_table <> 0 or is not null