У меня есть 500 записей в таблице. один столбец содержит все html-данные. так, например, - html> body> .../body>/html>. Что я хочу сделать, это найти и заменить. У меня есть этот тег в каждой записи - <table id="something something" />
Я хочу заменить это во всех строках <table id="" />
теперь сложная часть - это все что-то другое для каждого альта. Таким образом, единственным общим тегом является «table id =». как можно найти здесь замену?заменить строку в sql
ответ
Попробуйте это (предполагается, что только один «идентификатор таблицы» встречается в каждом):
declare @TestTable table (
html_data varchar(100)
)
insert into @TestTable
(html_data)
select '<html><body><table id="something something" /></body></html>'
union all
select '<html><body><table id="something different" /></body></html>'
select html_data from @TestTable
update t
set html_data = LEFT(t.html_data, CHARINDEX('<table id="', t.html_data)-1)
+ '<table id="" />'
+ RIGHT(t.html_data, LEN(t.html_data) - CHARINDEX(' />', t.html_data, CHARINDEX('<table id="', t.html_data)) - 2)
from @TestTable t
select html_data from @TestTable
EDIT: на основе обратной связи в комментариях ниже, этот модифицированный код должен работать.
declare @TestTable table (
html_data varchar(100)
)
insert into @TestTable
(html_data)
select '<html><body><table id="xxx"><tr><td></td></tr></table>... </body></html>'
select html_data from @TestTable
update t
set html_data = LEFT(t.html_data, CHARINDEX('<table id="', t.html_data)-1)
+ '<table id="">'
+ right(t.html_data, LEN(t.html_data) - CHARINDEX('>', t.html_data, CHARINDEX('<table id="', t.html_data)))
from @TestTable t
select html_data from @TestTable
он добавил «
Для этого вам потребуется написать хранимую процедуру, комбинацию оператора SELECT для поиска и оператора UPDATE для замены.
логически я знаю, как это сделать. кто знает. У вас есть пример синтаксиса, который мне нужно использовать? если нет, просьба не отвечать на этот вопрос – reffer
Используйте REPLACE function:
UPDATE YOUR_TABLE
SET html_data = REPLACE(html_data,
'<table id="something something" />',
'<table id="" />')
трудная часть это все «что-то что-то» различен для каждого альт.
SQL Server 2005+ имеет функциональность CLR, которую необходимо использовать для создания функции замены регулярных выражений, чтобы быть более удобным в качестве одного запроса. См. this page for both a downloadable script, and the source code.
Для версий SQL Server до этого вам может быть лучше получить контент в текстовом файле &, обновляя содержимое через regex/etc, для перезаписи существующего контента.
OP ищет универсальное решение, в котором идентификатор таблицы может быть различным в каждом случае. –
@JacobM: На мой вопрос отвечает ... –
Да. Когда я сделал этот комментарий, я не сделал этого, и я заменил свой нисходящий удар. –
Если вы пишете функцию курсора, чтобы пройти через каждую строку таблицы (очень неэффективное, но я предполагаю, что вы только делаете это один раз?)
затем сделать замену на эту строку:
SELECT REPLACE(@HTMLText,'table id="%" />','table id=""');
Я думаю, что должен делать то, что вам нужно, и здесь основная функциональность курсора, если вам это нужно: http://blog.sqlauthority.com/2007/01/01/sql-server-simple-example-of-cursor/
EDIT: на самом деле, я испытал немного больше, и я не могу заставить его принять подстановочный знак, хотя он не жалуется, я не вижу его работоспособным ...
Мне нравится эта идея, но почему-то ничего не произошло. он вернулся с существующей строкой, которая была до замены. – reffer
это мой синтаксис - выберите REPLACE (html, 'table id = "%" />', 'table id = ""') из статей где id = 101 .. html - это имя поля. – reffer
Да, извините, я думал, что у меня работает подстановочный знак, но, к сожалению, функция REPLACE() не принимает подстановочный знак ... – Brett
- 1. SQL Server 2008: заменить строку
- 2. заменить строку внутри таблицы sql
- 3. Заменить Timestamp заполнитель в SQL строку
- 4. Заменить первое появление '.' в SQL-строку
- 5. Как множественным заменить строку в SQL Server
- 6. Заменить или обрезать строку в SQL
- 7. Заменить строку в postgresql
- 8. заменить строку в строку Глоток заменить
- 9. заменить строку в php?
- 10. Заменить строку в строках
- 11. заменить строку в таблице
- 12. Заменить строку
- 13. Заменить строку в строку XML
- 14. SQL Заменить всю строку со значением
- 15. SQL заменить строку с подходящим значением
- 16. Невозможно заменить строку неизвестной длины SQL-запросом?
- 17. SQL заменить строку переменным положением символов
- 18. Заменить строку SQL во всех таблицах сразу
- 19. Заменить новую строку в ntext
- 20. Как заменить строку в таблице
- 21. заменить строку ответа PHP
- 22. Заменить строку в wicket
- 23. Заменить строку в файле
- 24. Заменить строку в data.frame
- 25. Заменить строку в PHP
- 26. Заменить строку в макропеременной?
- 27. Заменить "\" в строку
- 28. заменить строку в preg_replace
- 29. заменить строку в json
- 30. Заменить строку в databinder.eval
Что вы пытаетесь заменить? Я думаю, что теги не позволили вашему сообщению выйти правильно. –
Да, я отредактировал, чтобы показать теги. –
Какие СУБД вы используете? –