我想從過濾器的重量< 25公斤的表中拉數據,但我的表有磅的重量,我嘗試使用下面的SQL可以請一些人告訴我這是正確的方式做到這一點,或者有任何其他方式。英鎊轉換磅爲公斤
select * from dbo.abc
where (round((WEIGHT * 0.453592),0) < 25)
我想從過濾器的重量< 25公斤的表中拉數據,但我的表有磅的重量,我嘗試使用下面的SQL可以請一些人告訴我這是正確的方式做到這一點,或者有任何其他方式。英鎊轉換磅爲公斤
select * from dbo.abc
where (round((WEIGHT * 0.453592),0) < 25)
您的解決方案可行,但它不是sargaeble。更好的解決方案是將25kgs轉換爲lbs。這樣,如果您的WEIGHT列上有索引,則查詢分析器可以使用它。
一個附加說明:爲什麼舍入到小數點後0位?這樣你會失去準確性。除非你有這樣的要求,否則我會捨棄四捨五入。這是不必要的開銷。
正如其他人所提到的,您不希望轉換權重,因爲它會導致SQL Server不使用您的索引。所以試試這個:
SELECT *
FROM dbo.acb
WHERE WEIGHT < ROUND(25/.453592,4)
還有其他的方法,但你在那裏有一個看起來像它可以正常工作。你有特定的問題嗎? – 2015-03-30 21:01:53
爲什麼不把25千克轉換成磅(例如55.1156)並在查詢中使用? – adrianbanks 2015-03-30 21:01:59
這應該可行,但如果你經常這樣做,也許你應該創建一個[標量用戶定義函數](https://msdn.microsoft.com/en-us/magazine/cc164062.aspx)。 – Turophile 2015-03-30 21:02:45