[英]MySQL, CONCAT in SELECT statement
(SELECT CONCAT(@I, '_Delta') FROM table WHERE id_tb = @ID)
我將上面的語句用作INSERT的一部分。 問題是整行都被轉換為@I
的值(這是一個索引,值即0、1、2,...)。 因此,不是獲取SELECT的輸出,而是獲取0、1、2 ...
CONCAT的期望值是"0_Delta"
,然后是"1_Delta"
,等等。用其中一項替代CONCAT。
任何意見將不勝感激。 謝謝!
[碼]
如果存在則刪除表xxx_tb; 創建表xxx_tb(i_Validity INT,Delta INT);
如果存在AFTER_INSERT_ON_tb_in,則觸發DROP; DELIMITER $$為每個行開始在tb_in上插入AFTER_INSERT_ON_tb_in之后創建觸發器
SET @ID = NEW.id_tb;
SET @TYPE = (SELECT Type FROM header WHERE id_tb = @ID);
IF @TYPE = 'abcd' THEN
SET @SAMPLES = (SELECT SampleNumber FROM table WHERE id_tb = @ID);
IF(@SAMPLES > 1) THEN
SET @I = 0;
WHILE(@I < @SAMPLES) DO
INSERT INTO xxx_tb
(
i_Validity,
Delta
)
VALUES
(
(SELECT 0_Validity FROM table WHERE id_tb = @ID),
(SELECT CONCAT(@I, '_Delta') FROM table WHERE id_tb = @ID)
);
SET @I = @I + 1;
END WHILE;
END IF;
END IF;
END$$
定界符; [碼]
delta
被聲明為整數。 您正在從字符串值獲得靜默轉換。 因為@i
是開頭,所以這就是您獲得的值。
如果需要字符串值,可以嘗試將其聲明為varchar(255)
。
您的insert
可以更容易地作為insert . . . select
編寫insert . . . select
insert . . . select
insert . . . select
:
INSERT INTO xxx_tb(i_Validity, Delta)
SELECT `0_Validity`, CONCAT(@I, '_Delta')
FROM table WHERE id_tb = @ID);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.