mysql - 如何更改MySQL数据中的images/to asset/images?

标签 mysql

我有下表的数据。

CREATE TABLE IF NOT EXISTS `omc_product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `shortdesc` varchar(255) NOT NULL,
  `longdesc` text NOT NULL,
  `thumbnail` varchar(255) NOT NULL,
  `image` varchar(255) NOT NULL,
  `class` varchar(255) DEFAULT NULL,
  ...
  ...
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=121 ;

--
-- Dumping data for table `omc_product`
--

INSERT INTO `omc_product` (`id`, `name`, `shortdesc`, `longdesc`, `thumbnail`, `image`, `class`, `grouping`, `status`, `category_id`, `featured`, `other_feature`, `price`) VALUES
(1, 'Doggie', 'Cappelen forlag: New Flight', 'Doggie from New flight.', 'images/newflight_doggie_small.jpg', 'images/newflight_doggie_big.jpg', 'new-flight', 'imagebox-new', 'active', 5, '', 'none', 0.00),
(2, 'Jinnie', 'New flight Jinnie', '', 'images/newflight_jinnie_small.jpg', 'images/newflight_jinnie_big1.jpg', 'new-flight', 'imagebox-new', 'active', 5, '', 'none', 0.00),
(3, 'Trehus', 'Det hemmelige eventyret: tre hus', '', 'images/trehus_small.jpg', 'images/trehus.jpg', 'det-hemmelige-eventyret', 'imagebox-even', 'active', 5, '', 'none', 0.00),
(4, 'Anima Halloween', 'Forlaget fag og kultur...

缩略图和图像的所有字段都以 images/开头。

现在我需要在所有这些图像/前面添加 Assets /。

例如,代替

'images/newflight_doggie_small.jpg', 'images/newflight_doggie_big.jpg'

我需要更改为

'assets/images/newflight_doggie_small.jpg', 'assets/images/newflight_doggie_big.jpg'

谁能告诉我该怎么做吗?

提前致谢。

最佳答案

试试这个:

UPDATE omc_product
SET image = CONCAT('assets/', image), thumbnail = CONCAT('assets/', thumbnail)

MySQL UPDATE syntax , MySQL string functions

如果您必须多次执行此操作,则以下解决方案更“安全”:

正如 Bobby 在评论中提到的那样,您可以(应该)添加一个 WHERE 子句,以确保不会更改已以 assets 开头的路径:

UPDATE omc_product
SET image = CONCAT('assets/', image), thumbnail = CONCAT('assets/', thumbnail)
WHERE thumbnail NOT LIKE 'assets%' AND image NOT LIKE 'asset%'

但通过这种方式,您无法将 Assets 添加到图像缩略图,以防它仅在一个字段中丢失。

另一个解决方案可能是:

UPDATE omc_product
SET image = IF(image NOT LIKE 'asset%',CONCAT('assets/', image), image), 
thumbnail = IF(thumbnail NOT LIKE 'assets%', CONCAT('assets/', thumbnail), thumbnail)

但请注意,即使不需要更新,这也会更新数据库中的每一行。

关于mysql - 如何更改MySQL数据中的images/to asset/images?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130906/

相关文章:

php - Android 系统一键登录注册

php - 什么是索引 - 普通 - 全文 - 唯一

mysql - 在 select 中添加一列,返回第一个表中的 id 是否存在于另一个表中

java - SQLite 查询读取错误的 Id

php - 请提供有关 PHP 登录脚本的帮助

php - 同一字段上具有两个条件的 Sql 内连接

php - 如何将 mysqli_result 类的对象转换为 json 对象

mysql - 检查两个表中的多个值是否相等然后更新表的触发器

MySQL Connector net 为什么我们需要它?

java - Hibernate 无法在不重命名的情况下保存实体