我的表格有三列,如下所示
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');
由于
答案 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);