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

Rob*_*Rob 7 sql sql-server

基本上我想这样做:

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

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

(dbo中的ID是nvarchar(10).表)

CREATE TABLE #Temp  (ID int)
INSERT INTO #Temp SELECT ID FROM Table Where ISNumeric(Id)=0
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*iwi 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
Run Code Online (Sandbox Code Playgroud)


SQL*_*ace 9

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

然而,ISNUMERIC有一个问题

跑这个

SELECT ISNUMERIC('2d5'), ISNUMERIC('-'), ISNUMERIC('+')
Run Code Online (Sandbox Code Playgroud)

那些都返回1

看看IsNumeric,IsInt,IsNumber是否有某些方法可以确定它是否可以转换为整数