我有一个名为bundle_metadata的表,其中包含两列“名称”和“值”。我希望值列包含各种数据类型,具体取决于存储的元数据类型。由于缺乏更好的解决方案,我通过将其存储为varchar来解决此问题。在同一调用中投射列为不同类型
因此,例如一行可能是name: 'Price', value: '1000'
和另一行:name: 'Category', value: 'Home'
和第三个name: 'LocationLat', value: '55.15813'
。
现在的问题:
select语句然后可以是:
SELECT * FROM [bundle_metadata] WHERE (name='Price' AND value BETWEEN 200 AND 3000) OR (name='Category' AND value = 'Home')
呼叫的两个作品本身,但是当像上述组合,我得到这个错误:
Conversion failed when converting the nvarchar value '55.158313' to data type int.
注意:价值55.158313
甚至不是从选定的行。我究竟做错了什么?
在此先感谢
确定它是。您在where列中使用了'value'字段,并且mysql仍然试图将所有这些值转换为'between'调用的整数,尽管当'name ='时它应该被短路评估排除在外价格'失败。 –
@MarcB这是如何工作,如果查询本身正常工作,如下所示: 'SELECT * FROM [bundle_metadata] WHERE(name ='Price'AND value BETWEEN 200 and 3000)' 只有当它与查询的后半部分。 – vocoder