基本上我想这样做:
我想返回一个记录集,如果它包含一个数字,则将一个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)
ISNumeric(Id)=0 应该 ISNumeric(Id)=1
然而,ISNUMERIC有一个问题
跑这个
SELECT ISNUMERIC('2d5'), ISNUMERIC('-'), ISNUMERIC('+')
Run Code Online (Sandbox Code Playgroud)
那些都返回1
看看IsNumeric,IsInt,IsNumber是否有某些方法可以确定它是否可以转换为整数