char 值的语法有误

木头是猫 2010-01-06 11:12:05
SELECT CONVERT(money, aaa) AS Expr1
FROM info


SELECT MIN(CONVERT(money, aaa)) AS Expr1
FROM info


字段aaa的类型为nvarchar(50)


运行第一条语句,结果可以正常显示,可运行第二条则提示“无法将 char 值转换为 money。该 char 值的语法有误”

第一条能通过不就是说明字段aaa都可以转换为money类型,那为什么min下就出错了呢?
...全文
173 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousq00 2010-01-06
  • 打赏
  • 举报
回复
看看
忆轩辕 2010-01-06
  • 打赏
  • 举报
回复
因为字段aaa中存在字符
dawugui 2010-01-06
  • 打赏
  • 举报
回复
你的字段存在不能转换换数值的内容.

例如: '333.aa'等

你先用下面这个判断一下:
SELECT MIN(CONVERT(money, aaa)) AS Expr1
FROM info
where ISNUMERIC(aaa) = 1

ISNUMERIC
确定表达式是否为一个有效的数字类型。

语法
ISNUMERIC ( expression )

参数
expression

要计算的表达式。

返回类型
int

注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。

示例
A. 使用 ISNUMERIC
下面的示例返回 1,这是因为 zip 列包含有效的数值。

USE pubs
SELECT ISNUMERIC(zip)
FROM authors
GO

B. 使用 ISNUMERIC 和 SUBSTRING
下面的示例对于 titles 表中的所有书名都返回 0,这是因为没有一个书名是有效的数值。

USE pubs
GO
-- Because the title column is all character data, expect a result of 0
-- for the ISNUMERIC function.
SELECT SUBSTRING(title, 1, 15) type, price, ISNUMERIC(title)
FROM titles
GO

下面是结果集:

type price
--------------- -------------------------- -----------
The Busy Execut 19.99 0
Cooking with Co 11.95 0
You Can Combat 2.99 0
Straight Talk A 19.99 0
Silicon Valley 19.99 0
The Gourmet Mic 2.99 0
The Psychology (null) 0
But Is It User 22.95 0
Secrets of Sili 20.00 0
Net Etiquette (null) 0
Computer Phobic 21.59 0
Is Anger the En 10.95 0
Life Without Fe 7.00 0
Prolonged Data 19.99 0
Emotional Secur 7.99 0
Onions, Leeks, 20.95 0
Fifty Years in 11.95 0
Sushi, Anyone? 14.99 0

(18 row(s) affected)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧