基本上我想这样做:
我想返回一个记录集,如果它包含一个数字,则将一个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)
也不起作用。
答案 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