2010-03-26 5 views
1

У меня есть столбец, содержащий ссылки. Проблема в том, что заголовки ссылок находятся в одном столбце, поэтому он выглядит так:
linktitle|-|linkurl
Я хочу, чтобы название ссылки и linkurl в отдельных столбцах. Я создал новый столбец для URL-адресов, поэтому я ищу способ извлечь их и обновить столбец linkurl с ними. Есть ли какой-нибудь умный способ построить запрос, который делает это?SQL query construction - отдельные данные в столбце на два столбца

ответ

0
UPDATE TableName 
SET LinkTitle = Substring(LinkColumn, 0, InStr(LinkColumn, '|-|') - 1), 
LinkUrl = Substring(LinkColumn, InStr(LinkColumn, '|-|') + 3) 

С LinkColumn будучи в настоящее время существующий столбец, и LinkTitle & LinkUrl того, где вы хотите сохранить разделенные данные.

+0

Спасибо, ответив так быстро! Ваш запрос работает почти отлично, но в конце каждого заголовка есть | , Просто из любопытства, что такое +3? – Tommy

+0

InStr (LinkColumn, '| - |') возвращает индекс первого символа вашего разделителя, '| - |'. Однако вам нужен индекс первого символа URL-адреса, который на 3 больше. Поскольку запрос работает, вы можете принять этот ответ, нажав на галочку слева, чтобы другие с той же проблемой могли быстро увидеть решение. – DonaldRay

+0

А, я не знал о контрольных точках. Я сделаю это по другим вопросам, на которые был дан ответ. Спасибо, что объяснили InStr! – Tommy

1
SELECT substring(field_name, 1, locate('|-|', field_name)-1) as title, 
substring(field_name, locate('|-|', field_name)+3) as linkurl 
1
UPDATE tablename 
SET linktitle = SUBSTRING_INDEX(link , '|-|', 1) 
linkurl = SUBSTRING_INDEX(link , '|-|', -1) 
0

Запрос, который решается эта проблема выглядит следующим образом:

UPDATE jos_fabrik_posesapp 
SET linktitle = Left(poselink, InStr(poselink, '|-|')-1), 
linkurl = Substring(poselink, InStr(poselink, '|-|') + 3) 

Я не совсем уверен, что это значит, но это сработало. Спасибо за все ответы!

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