2013-02-13 3 views
2

мне нужно заполнить столбцы в моей базе данных для широты и долготы, однако исходная информация хранится в виде одной строкиSQL Server: как разбить строку, используя запятую как разделитель

например.

UDFChar1 = 41.243223,-8.183913 

Я предполагаю, что команда TRIM пригодится здесь, но я не знаю, как я могу сказать это точно остановиться на запятой для каждой половины.

То, что я надеюсь быть в состоянии придумать простой UPDATE запрос в соответствии с ниже:

UPDATE Asset 
SET Lattitude = (SELECT LTRIM(UDFChar1)), 
Longitude = (SELECT RTRIM(UDFChar1)) 

но, очевидно, с некоторой дополнительной работы в частях LTrim и RTrim, так что я только выбор данных до и без запятой в UDFChar1

Любые идеи о том, как этого достичь?

+0

см http://stackoverflow.com/questions/10914576/tsql-split-string * кивок Kevchadders * – Ingo

+0

Добро пожаловать в SO. _Пожалуйста, попробуйте выполнить поиск перед публикацией, этот вопрос задавался много раз. – Bridge

+0

Спасибо, я очень много искал, но ничего не нашел, чтобы соответствовать моим точным критериям. – Jediwannabe

ответ

16

Пожалуйста, попробуйте:

left(Col, charindex(',', Col)-1) 

и

right(Col, len(Col)-charindex(',', Col)) 

образец

SELECT 
    LEFT(COL, CHARINDEX(',', Col)-1) Lattitude, 
    RIGHT(COL, LEN(COL)-CHARINDEX(',', Col)) Longitude 
FROM(
    SELECT '41.243223,-8.183913' Col 
)x 
+0

Спасибо! Я смог адаптировать это, чтобы делать то, что мне нужно. – Jediwannabe

+0

код для справки - 'ОБНОВЛЕНИЕ активов SET Широта = (SELECT слева (UDFChar1, CHARINDEX (', 'UDFChar1) -1)), Долгота = (SELECT правый (UDFChar1, длина (UDFChar1) -charindex (', ', UDFChar1)))' – Jediwannabe

Смежные вопросы