这是我对数据库拉取的查询:
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
Run Code Online (Sandbox Code Playgroud)
无论是谁创建数据库,都会将Property.Propertyval列定义为字符串,当它表示为科学记数(4.0E-3,2.0E2等)时.我需要将字符串转换为double或double转换为字符串,无论哪种方式都可以工作,我不知道如何.我已经尝试搞乱这个TO_NUMBER()功能,到目前为止没有找到任何帮助.
如果您确实知道该字符串是有效数字,那么使用cast():
WHERE cast(property.propertyval as float) = :propValue
Run Code Online (Sandbox Code Playgroud)
一些警告.
首先,使用该函数将阻止查询使用索引propertyval.如果需要索引,可以随时创建功能索引.
其次,当值非常接近时,浮点值的比较可能是有问题的.你可能会考虑:
WHERE abs(cast(property.propertyval as float) - :propValue) < 0.001
Run Code Online (Sandbox Code Playgroud)
或其他一些门槛值.
| 归档时间: |
|
| 查看次数: |
13150 次 |
| 最近记录: |