MySQL:自动数据操作

时间:2015-02-09 07:29:20

标签: php mysql

我有一个带有表“产品”和很多列的MySQL数据库。

我有一个名为name的列,它始终具有如下名称结构: 示例

GD 0001 / PL40 
GD 0034 / PL60
GD 0106 / PL30
GD 0122 / 2S

在同一张表products中,我有另一列image。 可以依靠字段products自动填写此字段吗?

我正试图获得这个结果:

gd0001_pl40.jpg
gd0034_pl40.jpg
gd0106_pl30.jpg
gd0122_2s.jpg

如有必要,我可以使用PHP或SQL

谢谢,希望我的问题可以理解

3 个答案:

答案 0 :(得分:3)

  1. 用空格替换空格
  2. 替换/用_
  3. 最后的concat .jpg
  4. 使用select concat(REPLACE((REPLACE(column_name," ","")),'/','_'),'','.jpg') from table_name

      

    您可以添加一个函数将整个字符串转换为小写字母   可以在mysql以及应用程序层的php中执行此操作

答案 1 :(得分:2)

要转换实际值,首先运行此SQL:

UPDATE products SET 
image=LOWER(CONCAT(REPLACE((REPLACE(name," ","")),'/','_'),'','.jpg'));

如果你想要全自动转换,你可以创建两个触发器,这将在INSERT和UPDATE上为你完成:

DELIMITER ;;

CREATE TRIGGER products_ins BEFORE INSERT ON products
FOR EACH ROW
BEGIN
  NEW.image = LOWER(CONCAT(REPLACE((REPLACE(NEW.name," ","")),'/','_'),'','.jpg'));
END;

CREATE TRIGGER products_ins BEFORE UPDATE ON products
FOR EACH ROW
BEGIN
  NEW.image = LOWER(CONCAT(REPLACE((REPLACE(NEW.name," ","")),'/','_'),'','.jpg'));
END;

DELIMITER ;

这样,如果您更新name字段,您的image字段将自动更新。

答案 2 :(得分:0)

你需要编写自己的逻辑才能得到这个。你可以使用javascript或java(String replace(),split())方法。