Вот реализация VB.NET, эта реализация даст вам результат в КМ или Милях на основе значения Enum, которое вы передаете.
Public Enum DistanceType
Miles
KiloMeters
End Enum
Public Structure Position
Public Latitude As Double
Public Longitude As Double
End Structure
Public Class Haversine
Public Function Distance(Pos1 As Position,
Pos2 As Position,
DistType As DistanceType) As Double
Dim R As Double = If((DistType = DistanceType.Miles), 3960, 6371)
Dim dLat As Double = Me.toRadian(Pos2.Latitude - Pos1.Latitude)
Dim dLon As Double = Me.toRadian(Pos2.Longitude - Pos1.Longitude)
Dim a As Double = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(Me.toRadian(Pos1.Latitude)) * Math.Cos(Me.toRadian(Pos2.Latitude)) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2)
Dim c As Double = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a)))
Dim result As Double = R * c
Return result
End Function
Private Function toRadian(val As Double) As Double
Return (Math.PI / 180) * val
End Function
End Class
попробуйте следующее:
DECLARE @x varchar(8000)
SELECT TOP 4
@x=ISNULL(@x+', ','')+carModels
FROM dbo.Models
SELECT @x AS carModels
ИЗМЕНИТЬ тот же ответ, что и выше, но вот полный код для его проверки ...
declare @Models table (RowID int not null primary key identity(1,1), carModels varchar(20))
insert into @Models values ('Jeep')
insert into @Models values ('Honda')
insert into @Models values ('Mitsubishi')
insert into @Models values ('Ford')
insert into @Models values ('Mazda')
DECLARE @x varchar(8000)
SET @x=null
SELECT TOP 4
@x=ISNULL(@x+', ','')+carModels
FROM @Models
SELECT @x AS carModels
вывод:
carModels
----------------------------------
Jeep, Honda, Mitsubishi, Ford
(1 row(s) affected)
Следующее может сработать. Сегодня у меня нет SQLServer для проверки.
DECLARE @Str VARCHAR(8000)
SET @Str = SPACE(0)
SELECT @Str = @Str + ',' + SUBSTRING(@Str + Models.Name, 1, 10)
FROM dbo.Models
PRINT @Str
Это то, что вы можете сделать на клиенте? Если бы у меня был выбор, я бы, вероятно, удалил его из уровня данных и поместил на клиент, форматируя его в CSV, когда он мне нужен.