以varchar格式存储时搜索工程格式编号

时间:2016-10-31 23:42:23

标签: sql sql-server-2008-r2 varchar

我使用的是Microsoft SQL Server 2008 R2。

我们应该支持在工作中支持的数据库,并且所有实际值都存储为varchar,长篇大论背后的所有。

由于我们使用报告软件,我们的数字需要转换为十进制。 SQL Server似乎无法将科学记数法转换为十进制

EX:6.54E-6

我尝试搜索所有值,例如'%e%'希望找到它们然后我可以手动将它们全部转换为正常数字格式...但是这不起作用。

有没有办法可以进行大规模转换?或者至少搜索包含E ??的所有值。

我试过搜索E而我找不到值<给定的数字..因为它们存储为varchar

任何想法都会非常感激,我可能会在几个小时内看不到这一点(我再也不会再工作12个小时了,所以如果我不立即回应那个也就是为什么)。非常感谢先进的解决方案将为我节省数小时的搜索时间。

1 个答案:

答案 0 :(得分:0)

您应该只能将值转换为float:

select (case when isnumeric(val) = 1 then cast(val as float) end)
from t;
具有讽刺意味的是,在大多数情况下isnumeric()的一个弱点是它承认科学记数法。在这里,这是一个优势。

在SQL Server 2012+中,您可以使用try_convert()

select try_convert(float, val)
from t;