Улучшенная функция замены SQL — возможность обработки переменной части

#mysql #sql #variables #replace

#mysql #sql #переменные #заменить

Вопрос:

Я хотел бы обновить тысячи записей в моей базе данных SQL.

мой post_content из my_table выглядит так:

blablabla htt *://vimeo.com/12345678 блаблабла


или

блаблабла htt*://vimeo.com/12345678 блаблабла htt*://vimeo.com/12345678 (блаблабла)


и я хотел бы заменить

htt*://vimeo.com/12345678

Автор:

<iframe src="htt*://player.vimeo.com/video/12345678?title=0amp;amp;byline=0amp;amp;portrait=0" width="400" height="300" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe>

Проблема в том, что 12345678 отличается в каждом сообщении … и я должен заменить код перед этим номером и добавить код после этого номера.

Заменить код перед номером легко, но после, я не знаю, как это сделать? Как сказать функции замены: найдите htt*://vimeo/12345678 и укажите после чисел и добавьте «?title=0amp;a …< /iframe> .

Есть идеи?

Комментарии:

1. Какая версия SQL? MySQL? Microsoft SQL 2005, MS SQL 2008, Oracle?

2. Звучит как плохая идея. Оскорбление нормализации. Следующим шагом, вероятно, будет помещение VB-script в строку базы данных.

3. В первой строке он пишет «my SQL dB». Я добавил тег.

4. Методы встраивания видео время от времени меняются. Почему бы просто не сохранить идентификатор и оставить рендеринг вашему скрипту PHP / ASP?

Ответ №1:

Если я правильно понял, я полагаю, вы можете создать свою собственную функцию, которая принимает некоторые переменные и внутри нее выполняет некоторую замену и т. Д.

 CREATE FUNCTION MyReplace (Link nvarchar(4000), myVar nvarchar(500))
RETURNS nvarchar
DECLARE Result nvarchar(4000)
--create some replacing logic here, call REPLACE function etc: 
--Result=...
RETURN Result
 

Позже вызовите эту функцию в своем запросе, передав два параметра — исходную ссылку и вашу переменную.

Однако я не уверен, что это хорошая практика, как упоминалось выше.