我有一個名爲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