日期:2014-05-17  浏览次数:20691 次

SQL2000某列内容
SQL2000某列内容
请问表test,列名 qty

如何判断qty列内容是否数值型?

------解决方案--------------------
select *
from syscolumns 
where id=OBJECT_ID('test')


select case when xtype=56 then 'int类型' else '' end
from syscolumns 
where id=OBJECT_ID('test') and name='qty'

------解决方案--------------------
上面上判断类型,下面是判断内容

select *
from test
where isnumeric(qty)=1


------解决方案--------------------
引用:
这种方法好像也有点小问题,不一定要整数的呀,1.2, 1.33333,4,9,900000
就是判断是否数值型,不论是整数、小数  都应该判断为数值型。

--匹配模式中再加一个.即可。
CREATE TABLE #test(qty VARCHAR(100))
INSERT #test
SELECT '1' UNION ALL
SELECT '1.2' UNION ALL
SELECT 'abc'
 
SELECT *, 是否整数= CASE WHEN PATINDEX('%[^0-9.]%', CAST(qty AS VARCHAR(100))) = 0  THEN 'yes' ELSE 'no' end
FROM #TEST
/*
qty 是否整数
1 yes
1.2 yes
abc no
*/