Postgresql,将文本视为获取MAX函数结果的数字

时间:2013-01-04 10:43:38

标签: postgresql

仍然没有解决日期写作字符串的问题,这是另一个问题 我有文本列,其中只有数字写(如文本) 通过使用函数MAX,我得到不正确的结果,因为9大于30 在这里有任何内联函数,如VAL或CINT或我可以比较和使用像SELECT,MAX和其他类似的查询中的数字的文本数据(只有数字)?

以下示例中的效果如何:

 mCmd = New OdbcCommand("SELECT MAX(myTextColumn) FROM " & myTable, mCon)

2 个答案:

答案 0 :(得分:1)

您需要使用max(to_number(myTextColumn, '999999'))

手册中有更多详细信息:http://www.postgresql.org/docs/current/static/functions-formatting.html

如果所有“数字”都是整数,您还可以使用强制转换运算符:max(myTextColumn::int)

如果你的文本值格式正确,你可以简单地将它们加倍,例如:'3.14'::numeric

如果未根据语言设置格式化文本,则需要使用包含小数分隔符的格式掩码to_number()to_number('3.14', '9.99')

答案 1 :(得分:1)

要让MAX工作得更好,您需要先以数字格式转换文本字段

mCmd = New OdbcCommand("SELECT MAX(TO_NUMBER(myTextColumn, '99999')) FROM " & myTable, mCon)