【发布时间】:2010-12-21 01:43:00
【问题描述】:
PRINT CONVERT(NUMERIC(18,0), '')
产生Error converting data type varchar to numeric.
然而,
PRINT CONVERT(INT, '')
生成0 没有错误...
问题:是否有一些 SQL Server 标志,或者我需要为每个 varchar 到数字的转换做 case 语句? (除了显而易见的原因?)
【问题讨论】:
-
我不认为它不可靠,它只是不是一个完整的测试。它表示该值成功转换为其中一种数字类型,因此我添加了条件来测试至少一个数字、没有美元符号、没有科学记数法等。
-
你怎么知道它不可靠?你必须问。当shown different (and working) techniques 使用派生表和 CASE 时,您说您不想依赖它们。如果其他人读到这篇文章,请投反对票。
-
case when @a not like '%[^0-9.]%'非常接近但没有 isumeric(),它会接受像 '123.45.67' 之类的东西
标签: sql sql-server numeric-conversion