这是我对数据库拉取的查询:
SELECT DISTINCT
TEMPLATE_GROUP_PROPERTIES.PROPERTYTYPE,
PROPERTY.PROPERTYVAL
FROM
TEMPLATE_GROUP_PROPERTIES
LEFT OUTER JOIN PROPERTY_DATA
ON (TEMPLATE_GROUP_PROPERTIES.PROPERTYGROUPID = PROPERTYDATA.PROPERTYGROUPID)
WHERE
PROPERTY.PROPERTYVAL = :propValue
创建数据库的任何人都将Property.Propertyval
列定义为字符串,当它表示为科学记数法编号(4.0E-3,2.0E2等)时。我需要将字符串转换为double或double转换为字符串,无论哪种方式都可以工作,我不知道如何。我曾尝试弄乱TO_NUMBER()
函数,到目前为止找不到任何帮助。
答案 0 :(得分:5)
如果您确实知道字符串是有效数字,请使用cast()
:
WHERE cast(property.propertyval as float) = :propValue
一些警告。
首先,使用该函数将阻止查询在propertyval
上使用索引。如果需要索引,可以随时创建功能索引。
其次,当值非常接近时,浮点值的比较可能会有问题。你可能会考虑:
WHERE abs(cast(property.propertyval as float) - :propValue) < 0.001
或其他一些阈值。