T-SQL命令只获取可以CAST()的行

时间:2011-05-20 15:49:37

标签: sql-server tsql

我有一个原始数据的数据库,其中包含varchar,其中一列包含价格,大部分都可以轻松转换为FLOAT。但是,有一些行在该列中包含一堆字符,并且不会转换为float。

有没有办法只选择转换为float的行(即只有taht实际上有一个数字)?

谢谢

5 个答案:

答案 0 :(得分:4)

注意:在+ 'e0''+''$'和{'.''3e8'SELECT * FROM YourTable WHERE ISNUMERIC(YourColumn + 'e0') = 1 和{{1}}中加入{{1}}非常重要否则{1}}将全部返回1.

{{1}}

答案 1 :(得分:1)

您是否尝试过ISNUMERIC功能?

SELECT *
FROM <table>
where ISNUMERIC(column)=1

请参阅ISNUMERIC()

答案 2 :(得分:0)

首先尝试使用ISNUMERIC函数,并且仅当它是数字时才应用CAST。

http://msdn.microsoft.com/en-us/library/ms186272.aspx

答案 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。