我需要转换数据库表中的序列号以显示为数字或整数。我试图将它们转换,但是它似乎不喜欢某些值,如下所示:1.02253e + 007。出现错误说明:
第245级状态1状态2行
将varchar值'1.02253e + 007'转换为时转换失败 数据类型为int。
有什么我遗漏的东西吗?非常感谢
SELECT [ID]
,[SalesOrder]
,[JobNumber]
,[StockCode]
,SerialNumber
,CONVERT(NUMERIC(16, 0), CAST(CASE
WHEN ISNUMERIC(SerialNumber) = 1 THEN
SerialNumber
ELSE 0
END AS FLOAT))
接收错误: 消息245,第16级,状态1,第2行 将varchar值'1.02253e + 007'转换为数据类型int时,转换失败。
答案 0 :(得分:0)
(CASE WHEN ISNUMERIC(SerialNumber) = 1
THEN CONVERT(NUMERIC(16, 0), SerialNumber)
ELSE 0
END)
返回一个整数,这是您的问题。您正在执行许多不必要的中间转换。只要做:
COALESCE(TRY_CONVERT(NUMERIC(16, 0), SerialNumber), 0)
或更妙的是:
TRY_CONVERT(NUMERIC(16, 0),
COALESCE(TRY_CONVERT(float, SerialNumber), 0)
)
如果您需要支持指数值(例如1.02253e + 007),那么您确实需要中间转换为float:
function show (classname) {
// targeting your button
const button = document.getElementById('button')
// find all possible texts inside of it
const spans = button.getElementsByTagName('span')
// hide all of them
Array.prototype.slice.call(spans).forEach(span => span.classList.remove("visible"))
// select one to be shown
const next = button.getElementsByClassName(classname)[0]
// show it
next.classList.add('visible')
}