3

次のように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 に答える