SQL Сервер заменяет весь неизвестный столбец String - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь заменить всю строку столбца на SQL Сервер. Я не знаю, какова точная строка. Таким образом, мне не удалось использовать "REPLACE".

CREATE PROCEDURE insertHTML
    @html_section nvarchar(50),
    @html_content nvarchar(4000)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE html 
    SET html_content = REPLACE(html_content, '', @html_content)
    WHERE html_section = @html_section
END

Ответы [ 3 ]

1 голос
/ 19 апреля 2020

Если вы хотите replace the entire string, просто выполните UPDATE следующим образом:

go
create procedure insertHTML
    @html_section   nvarchar(50),
    @html_content   nvarchar(4000)
AS
BEGIN
    SET NOCOUNT ON;
    UPDATE html SET html_content = @html_content
    WHERE html_section = @html_section
END

replace может работать, но будет медленнее:

SET html_content = REPLACE(html_content, html_content, @html_content)

, и это это разновидность overkill, поскольку вам просто нужно изменить значение.

0 голосов
/ 19 апреля 2020

Вам, вероятно, придется дать нам больше на go. Несмотря на это, я предполагаю, что раздел HTML может быть чем-то вроде HEAD или BODY. В этом случае вы можете написать оператор, похожий на этот:

CREATE PROCEDURE dbo.insertHTML
    @html_section   nvarchar(50),
    @html_content   nvarchar(4000)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE html SET html_content = 
        STUFF(html_content, 
              CHARINDEX('<' + @html_section, html_content), -- opening tag
              CHARINDEX('</' + @html_section, html_content) -- closing tag
              - CHARINDEX('<' + @html_section, html_content) -- opening tag position
              + LEN('</' + @html_section + '>') -- allow for the length of the closing tag
              @html_content)
    WHERE html_section = @html_section;
END;

. Он должен найти открывающие и закрывающие теги для раздела и заменять их содержимым, переданным в качестве параметра. Я не знаю, содержит ли ваш входящий @html_content теги или нет. Если этого не произойдет, вам нужно изменить рассчитанные позиции.

0 голосов
/ 19 апреля 2020

Заменить - это подстановка определенного вами персонажа. Запрос выше ищет значение '', а затем заменяется вашим @html_content. Поскольку вы хотите заменить значение всего столбца, почему бы не использовать обновление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...