3

我有如下三列的表格

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');

谢谢

4

3 回答 3

2

尝试:

INSERT INTO auto_bulk(content,heading)
SELECT @var := 'Helloworld123', SUBSTRING(@var,1,5);
于 2013-01-08T06:17:57.867 回答
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');
于 2013-01-08T06:37:43.193 回答
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);
于 2013-01-08T06:19:24.897 回答