设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 9297|回复: 5

[求助] 如何将SQLSERVER2000中的字符型转化为数字型的?

[复制链接]
发表于 2007-11-29 17:10:25 | 显示全部楼层 |阅读模式
数据库是SQLSERVER2000,前期在设计表的时候没有考虑好,将数字型的字段设置成了字符型的:L ,由于涉及的表众多,修改表的难度有些大,问问能不能在JSP或用SQL语句将这些字符型字段的值转换成数字型的,我在用下面代码的时候就报错了:


SELECT SUM(tianshu) FROM T_table

提示:sum or average aggregate 运算不能以 navchar 数据类型作为参数,由于需要使用SQL语句的SUM项很少,想问问有什么简便的方法实现没有?
发表于 2007-11-30 14:48:16 | 显示全部楼层
用Java执行下类型转换不就得了
发表于 2007-12-3 17:38:30 | 显示全部楼层
下面两个方法应该能解决你的问题,我手上没装sqlserver,你自己调试下。

语法
使用 CAST:

CAST ( expression AS data_type )

使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式。

data_type

目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型

length

nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。

style

日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
发表于 2008-3-5 17:08:53 | 显示全部楼层
使用 CAST可以啦。
发表于 2008-4-7 23:13:21 | 显示全部楼层
加一个自定义函数
CREATE FUNCTION ConvertNumber(@str varchar(32))
RETURNS integer AS  
BEGIN
        declare @ret integer

        select @ret = CASE WHEN ISNUMERIC(@str) = 0 THEN NULL ELSE @str END

        return @ret
END
调用时加上dbo.
发表于 2008-12-17 22:06:59 | 显示全部楼层
建议使用CAST
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2019-5-25 03:01 , Processed in 0.087383 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表