如何仅从字符串和浮点混合的行中获取浮点值

时间:2019-06-25 20:04:04

标签: sql

基本上,我所拥有的是一行值,该值行中包含各种不同的内容。当前,值的范围从数字到“不可用”等值。

我如何能够从该行中获取所有float值,而将所有其他值都留在后面。

1 个答案:

答案 0 :(得分:0)

欢迎堆栈溢出!您的问题很详细。最好提供更多的上下文,以便社区可以更好地回答您的问题。但是,做一些假设...

通常,表中的每一列都具有数据类型,因此(不了解您的表的其他信息)我只是说SELECT包含您要查找的数字数据的列;例如

SELECT numberColOne, numberColTwo FROM table_of_stuff;

但是,如果您说给定的列可能会有一个浮点数 OR 一点文字(例如“ Not Available”),那么您的选择就很大程度上取决于RDBMS(MySQL,使用Oracle,SQL Server,SQLite等)。我想您可以在每列上使用CASE .. WHEN .. ELSE构造,测试数字并产生字符串的前哨值。 ...但是那已经是您已经拥有的:数字和非数字数据的混合。

因此,如果您希望转换这样的源数据:

row 1 : 3.1415926  Not Available  2.1111         6.6667   Not Available
row 2 : 2.71828    1.2222         Not Available  3.33333  4.50

进入:

row 1 : 3.1415926  2.1111  6.6667
row 2 : 2.71828    1.2222  3.33333  4.50

然后,我同意@jarlh的评论:SQL不是您要使用的。在这种情况下,您可以使用SQL将表中的所有内容提取到导出文件中,然后使用代码(bashsedperl等)处理该文件以将其删除。字符串值。正如@jarlh所说,SQL都是关于结构化数据的,如果您想要非结构化的数据,则需要组合工具。

HTH。