2017-09-13 57 views
1

我有這樣的選擇查詢:在運行SQL -place小數點後2位選擇 - SQL

SELECT Nombre, Tipo, Descripcion,Abierto,Cerrado, Latitud, Longitud, 
SQRT(POW(69.1 * (Latitud - 19.55385) , 2) 
+ POW(69.1 * (- 99.21716 - Longitud) 
* COS(Latitud/57.3) , 2)) AS distance 
FROM Clientes 

它工作正常,但它有時會返回一個很長的數字(很多位小數),我想它只用兩個地方返回帶小數點的值。

我試過媒體鏈接

CONVERT(DECIMAL(10,2),distance) 

,但我認爲我的代碼寫的不好。 如果有人能給我一個例子或其他東西,那將是非常感謝!

對不起,我希望這是可以理解的。並提前致謝!

+0

這樣鑄造沒有任何問題。另一個選擇是你可以使用'ROUND()'函數(例如'round(distance,2)')。或者,(可能是* best *選項)是在顯示層中使用數字格式,而不是在SQL中。 – Xedni

+0

您需要在計算中應用演員表:轉換(小數(10,2),SQRT(POW(69.1 *(Latitud-19.55385),2) + POW(69.1 *( - 99.21716 - Longitud) * COS (Latitud/57.3),2)))' – dnoeth

+0

@Xedni:這不是格式*,因此它應該在SQL中完成,而不是在表示層中完成。 – dnoeth

回答

1

使用功能Round()數學圓Cast調整精度

例:

select Cast(ROUND(- 99.2171600000009669 ,2) as decimal(10,2))

結果

-99.22 

在您的查詢:

SELECT Nombre, Tipo, Descripcion,Abierto,Cerrado, Latitud, Longitud, 
Cast(ROUND(SQRT(POW(69.1 * (Latitud - 19.55385) , 2) 
+ POW(69.1 * (- 99.21716 - Longitud) 
* COS(Latitud/57.3) , 2)) ,2) as decimal(10,2)) AS distance 
FROM Clientes 
Order By Distance Desc 
+0

Worked Perfectly! Thanks! – MichCAn

+0

沒問題。:)。我編輯了按距離排序的響應desc –