Замена / Удаление всего текста несколькими наборами символов в SQL - PullRequest
0 голосов
/ 04 апреля 2020

В одном из полей результатов есть несколько ссылок html, например, в приведенном ниже коде. В настоящее время набор результатов выглядит следующим образом:

Supervisor  Employee
----------- --------
Supervisor1 <td><br>Employee1<td><br>Employee2<td><br>Employee3</table>
Supervisor2 <td><br>Employee1<td><br>Employee2</table>
Supervisor3 <td><br>Employee1<td><br>Employee2<td><br>Employee3<td><br>Employee4</table>

Желаемый результат:

Supervisor  Employee
----------- --------
Supervisor1 Employee1 || Employee2 || Employee3
Supervisor2 Employee1 || Employee2
Supervisor3 Employee1 || Employee2 || Employee3 || Employee4

Пример запроса:

create table #Temp
(
    Supervisor varchar(200), 
    Employee Varchar(200), 
)

INSERT INTO #Temp
VALUES ('Supervisor1', '<td><br>Employee1<td><br>Employee2<td><br>Employee3</table>')
, ('Supervisor2', '<td><br>Employee1<td><br>Employee2</table>')
, ('Supervisor3', '<td><br>Employee1<td><br>Employee2<td><br>Employee3<td><br>Employee4</table>')
select * from #temp
drop table #temp

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

Вы, кажется, хотите удалить теги HTML. Вы можете сделать это явно:

select t.*,
       replace(replace(employee, '<td><br>', ' '), '</table>', '') as employees
from t;
0 голосов
/ 04 апреля 2020

Я думаю:

SELECT 
  Supervisor = t.Supervisor,
  Employee   = REPLACE(REPLACE(REPLACE(t.Employee,'<td>',''),'</table>',''),'<br>',' || ')
FROM #Temp AS t;

Возвращает:

Supervisor      Employee
--------------- -----------------------------------------------------------
Supervisor1      || Employee1 || Employee2 || Employee3
Supervisor2      || Employee1 || Employee2
Supervisor3      || Employee1 || Employee2 || Employee3 || Employee4

Вы можете обновить свои данные следующим образом.

UPDATE #Temp 
SET Employee = REPLACE(REPLACE(REPLACE(Employee,'<td>',''),'</table>',''),'<br>','||');
...