Sanitize во время вставки MySQL

0

В настоящее время я делаю вставку MySQL следующим образом:

INSERT INTO RESI (MarketingRemarks) 
SELECT PropertyInformation FROM 'property_res';

Затем я запускаю независимые команды для очистки таблицы RESI любых странных символов, таких как:

UPDATE RESI SET MarketingRemarks = REPLACE(MarketingRemarks, '"', '"');
UPDATE RESI SET MarketingRemarks = REPLACE(MarketingRemarks, '"', '"');
UPDATE RESI SET MarketingRemarks = REPLACE(MarketingRemarks, '–', '-');
UPDATE RESI SET MarketingRemarks = REPLACE(MarketingRemarks, '½', '1/2');
UPDATE RESI SET MarketingRemarks = REPLACE(MarketingRemarks, '', '\'');

Это кажется очень неэффективным, чтобы иметь все эти запросы. Есть ли способ объединить это в один оператор INSERT?

Я пробовал множество способов поместить REPLACE в инструкцию INSERT, но не повезло.

  • 0
    ответил раньше. stackoverflow.com/questions/1671040/...
  • 0
    @Arquillian Я не вижу здесь никакого INSERT. Это неверный ответ.
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ

Вы можете использовать функцию replace в своем предложении select, например:

INSERT INTO RESI (MarketingRemarks) 
SELECT REPLACE(REPLACE(PropertyInformation, '½', '1/2'), '"', '"') FROM 'property_res';

и вам нужно построить цепочку вашей функции replace как в примере, представленном @Arquillian

0

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

DELIMITER $$
USE 'nestor_dbo'$$
CREATE FUNCTION 'Sanitize' (src NVARCHAR(100))
RETURNS NVARCHAR(100)
BEGIN
    DECLARE result NVARCHAR(100);

    SET result = src;

    SET result = replace(result, '"', '"');
    SET result = replace(result, '"', '"');
    SET result = replace(result, '–', '-');
    SET result = replace(result, '½', '1/2');
    SET result = replace(result, '', '\'');

RETURN result;
END$$


INSERT INTO RESI (MarketingRemarks) 
SELECT Sanitize(PropertyInformation) FROM 'property_res';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню