Установка одного столбца записи из другого, просто заменив пробелы запятыми - PullRequest
0 голосов
/ 22 февраля 2020

Итак, в нашей базе данных есть столбец meta_keywords, который в основном пуст. Я хочу изменить это, сделав мета-ключевые слова такими же результатами, что и столбец «заголовок», за исключением того, что вместо пробелов, которые я хочу запятыми.

Так что если бы заголовок был «Государственный банк Вирджинии», мета-ключевые слова были бы «Вирджиния, штат, банк "

Однако, это не работает:

update my_table set meta_keywords = concat(title, ',', REPLACE(meta_keywords, ' ', ',') WHERE meta_keywords LIKE (' ');

Я предполагаю, что я не могу сделать такую ​​замену, однако, если я просто задаю meta_keywords столбец «title» и запускаю это:

UPDATE my_table SET meta_keywords= REPLACE(meta_keywords, ' ', ',') WHERE meta_keywords LIKE (' ');

Ничего не происходит (запрос выполняется, но не произведено записей), даже если в таблице mea_keywords есть пробелы.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Это показывает, как работает ваш запрос, до предыдущего обновления не было найдено ни одной строки, соответствующей

Я добавил LOWER, потому что ваш вопрос помещает sall workds в нижний регистр

CREATE TABLE my_table  (
  `title` varchar(10)
  ,`meta_keywords` VARCHAR(50)
);

INSERT INTO my_table 
  ( `title`,`meta_keywords`)
VALUES
  ( 'Apple','Virginia State Bank'),
  ( 'Banana','Pensilvania State Bank'),
  ( 'Pear','washington State BANK');
✓

✓
update my_table 
   set meta_keywords =  CONCAT(`title`,',',REPLACE(LOWER(`meta_keywords`),' ',',')) 
WHERE meta_keywords LIKE ('% %');;
SELECT * FROM my_table ;
title  | meta_keywords                
:----- | :----------------------------
Apple  | Apple,virginia,state,bank    
Banana | Banana,pensilvania,state,bank
Pear   | Pear,washington,state,bank   

db <> скрипка здесь

1 голос
/ 22 февраля 2020

Проблема здесь в использовании LIKE (' '). Вы делаете это как IN (' '). Если вы хотите заменить все пробелы на запятую, вы можете просто пропустить определение WHERE. Просто сделайте:

UPDATE my_table SET meta_keywords = CONCAT(title, ',', REPLACE(meta_keywords, ' ', ','));

Кроме того, рекомендуется сначала протестировать ваш запрос, чтобы посмотреть, что и как он обновит, выполнив SELECT, например:

SELECT CONCAT(title, ',', REPLACE(meta_keywords, ' ', ',')) FROM my_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...