我有一个原始数据的数据库,其中包含varchar,其中一列包含价格,大部分都可以轻松转换为FLOAT。但是,有一些行在该列中包含一堆字符,并且不会转换为float。
有没有办法只选择转换为float的行(即只有taht实际上有一个数字)?
谢谢
答案 0 :(得分:4)
注意:在+ 'e0'
,'+'
,'$'
和{'.'
,'3e8'
,SELECT *
FROM YourTable
WHERE ISNUMERIC(YourColumn + 'e0') = 1
和{{1}}中加入{{1}}非常重要否则{1}}将全部返回1.
{{1}}
答案 1 :(得分:1)
答案 2 :(得分:0)
首先尝试使用ISNUMERIC函数,并且仅当它是数字时才应用CAST。
答案 3 :(得分:0)
WHERE ISNUMERIC(price_col) = 1
怎么样?
答案 4 :(得分:0)
如果您使用的是SQL Server 2012+并且const onEnter = (nextState, replaceState) => {
if (isClient) {
AuthHelper.findCurrentUser()
.then(response => {
// This here doesn't work, `replaceState` doesn't change the page or URL, however I know for sure
// that the line is being called because if I put a `debugger` right before it,
// the `debugger` hits every time...
replaceState({nextPathname: nextState.location.pathname}, '/dashboard');
})
.catch(response => {});
// If we put the same line here, it redirects the user to the dashbaord.
// replaceState({nextPathname: nextState.location.pathname}, '/dashboard');
}
}
适合您,则可以使用TRY_PARSE()
来指定确切的数据类型。
ISNUMERIC()
顺便说一句,您不应该使用不精确的数据类型作为货币。您应该使用NUMERIC,DECIMAL或MONEY。