在数据插入时将子字符串内容插入新列

时间:2013-01-08 06:15:22

标签: mysql

我的表格有三列,如下所示

CREATE TABLE `auto_bulk` (
  `bulk_id` int(5) NOT NULL auto_increment,
  `heading` varchar(25) NOT NULL,
  `content` text NOT NULL,
  PRIMARY KEY  (`bulk_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

我需要将一些批量记录直接添加到mysql数据库。

INSERT INTO auto_bulk(heading,content)VALUES('xxx','xxx');

但我的问题是我只给出了内容,标题应该是内容的前5个字母。喜欢,

INSERT INTO auto_bulk(heading,content)VALUES('Hello','Helloworld123');

我知道用 substr 如何处理php但是我想知道有没有办法直接在mysql中做到这一点 我试过这个但没有运气

INSERT INTO auto_bulk(heading,content)VALUES(SUBSTRING(content,1,5),'Helloworld123');

由于

3 个答案:

答案 0 :(得分:2)

尝试:

INSERT INTO auto_bulk(content,heading)
SELECT @var := 'Helloworld123', SUBSTRING(@var,1,5);

答案 1 :(得分:1)

像这样创建一个BEFORE INSERT触发器:

DELIMITER $$

CREATE TRIGGER auto_bulk_trigger1
    BEFORE INSERT
    ON auto_bulk
    FOR EACH ROW
BEGIN
    SET NEW.heading = LEFT(NEW.content, 5);
END
$$

DELIMITER ;

然后插入内容:

INSERT INTO auto_bulk(content) VALUES('Helloworld123');

答案 2 :(得分:0)

您可以在进行查询之前设置变量,如...

$first_five = substr($text, 0, 5);

然后使用

INSERT INTO auto_bulk(heading,content)VALUES($first_five,$text);

或假设您预先指定$ text变量的更直接的方法:

INSERT INTO auto_bulk(heading,content)VALUES(substr($text, 0, 5) , $text);