如何在插入时将数字连接到另一个数字

时间:2013-01-18 05:05:18

标签: mysql sql sql-update string-concatenation

我试图在插入语句中将数字连接到最大+ 1数字,但我有点卡住了。我的表是这样的:

CREATE TABLE `articles` (
    `artcId` INT(10) NOT NULL AUTO_INCREMENT,
    `artcUserId` INT(10) NOT NULL DEFAULT '0',
    `artcStackId` INT(10) NOT NULL DEFAULT '0',
    `artcPublicId` INT(10) ZEROFILL NOT NULL DEFAULT '0',
    `artcCountry` VARCHAR(2) NULL DEFAULT NULL,
    `artcTitle` VARCHAR(200) NULL DEFAULT NULL,
    PRIMARY KEY (`artcUserId`, `artcId`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

我当前的sql是这样的:

insert into articles (artcUserId, artcStackId, artcCountry, artcTitle)
select 4,IFNULL((MAX(artcStackId)+1) ,0),'US','Hello World'
FROM articles;

我要做的是,将一个数字连接到新的artcStackId并将其保存到数据库中。但是我被卡住了。见第二张图片artcPublicId。

    insert into articles (artcUserId, artcStackId, artcCountry, artcTitle)
    select 2,IFNULL((MAX(artcStackId)+1) ,0),

    case when new.artcCountry = 'US' then conact(91, -- the new artcStackId goes here --)
         when new.artcCountry = 'UK' then conact(92, -- the new artcStackId goes here --)
         when new.artcCountry = 'CA' then conact(93, -- the new artcStackId goes here --)
    end

,'UK','Hello World'
FROM articles;
select * from articles;

知道如何做到这一点? artcPublicId是91或92或93,具体取决于国家和新的artcStackId

Current results Desired results

1 个答案:

答案 0 :(得分:0)

  1. 你最好把artcPublicId变成一个varchar,这样可以更容易连接

  2. 如果您知道在91/92/93之后想要离开的位数,您可以尝试类似

    (91 * 10000 + artcStackId)

  3. 你可以转换为instring并再次返回,比如

    cast('910000'+ cast(artcStackId as varchar),int(10))

  4. 希望其中一个帮助