重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:
在河曲等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、成都网站设计 网站设计制作定制网站设计,公司网站建设,企业网站建设,高端网站设计,营销型网站建设,成都外贸网站建设,河曲网站建设费用合理。
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其实,一般情况下没有必要把字符串转换为数字类型
假如需要比较两个字段是否相等,但是一个字段为字符串类型,一个为数字类型,用“=”比较两个值是否相等时,SQL SERVER会自动把字符串转换为数字再比较的!
例如:
select da.TITLE_NAME,dsc.NAME
from dbo.DV_DUTY dd
inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA)
left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE='2')
where dd.AREA is not null
这个SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID为数字类型,dd.AREA为字符类型,相当于这样on(1='1')的判断,这时候就会自动吧字符串的'1'转换为数字类型再比较的。
但是也有弊端,一旦字符类型转换为数字类型出错(说明字符串的确就非数字组成的),SQL就会抛出异常。
SQL SERVER 2005中有判断字段是否为数字的函数:
ISNUMERIC(字段名) -----假如字段是数字类型返回1,不是就返回0
但是好像有的时候不好使,比如:select isnumeric('3,34') 就返回1
说明这个函数对字段值中全是数字但是数字间用“,”和“.”(逗号或点)隔开的都视为数字了!
不知道你什么数据库。
如果是 Oracle
那么
NVL( (你那个子查询) , 0 ) AS 概念策划阶段
如果是 SQL Server
那么
ISNULL( (你那个子查询) , 0 ) AS 概念策划阶段
SQL
server用isnull(字段名,0)
Oracle用nvl(字段名,0)
作用是判断字段名是否为null如果不是null就保留原值,如果是就返回默认值0
这里的0可以修改为任何你想返回的值
你这问题可以直接这样计算
isnull(进货数量,0)-isnull(出货数量,0)
Oracle的话就是
nvl(进货数量,0)-nvl(出货数量,0)