Нужно переместить таблицу SQL Server 2005, хранящую Lat;Lng как varchar, в Spatial?

Я прочитал несколько статей об использовании пространственно оптимизированных таблиц. На самом деле я использую сохраненную широту и долготу как varchar через запятую (лат;lng).

Не могли бы вы предложить лучший способ выполнить это изменение и перечислить преимущества. Это действительно необходимо для большого проекта или только перейти на SQL Server 2008?

Благодарю.

1 ответ

Решение

Я бы добавил к вашей таблице два новых постоянных вычисляемых двоеточия, как показано в демонстрации ниже.

create table Demo (
    LatLng varchar(100),
    Lat as CAST(LEFT(LatLng, charindex(';',LatLng)-1) as float) PERSISTED,
    Lng as CAST(SUBSTRING(LatLng, charindex(';',LatLng)+1, LEN(LatLng)-charindex(';',LatLng)) as float) PERSISTED
)

insert into Demo
    (LatLng)
    values
    ('33.0000;15.222222')

select *
    from Demo

drop table Demo
Другие вопросы по тегам