簡體   English   中英

MySQL,SELECT語句中的CONCAT

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM