mysql:在一个变量中连接两个字符串

mysql:在一个变量中连接两个字符串,mysql,Mysql,因此,我编写了一个过程,将两个字符串连接在一个变量中,然后将其存储在数据库中。当我运行这个过程时,它工作得很好,但是它没有将变量存储在数据库中。而是将其存储为0。 这是我使用的代码 select memFname, memLname into fn, ln from member where memberid = memid; SET v_name := fn || ' ' || ln ; insert into profile(memberid, fullName) values (mem

因此,我编写了一个过程,将两个字符串连接在一个变量中,然后将其存储在数据库中。当我运行这个过程时,它工作得很好,但是它没有将变量存储在数据库中。而是将其存储为0。 这是我使用的代码

select memFname, memLname into fn, ln from member where memberid = memid;
SET v_name := fn || '  ' || ln ;

insert into profile(memberid, fullName) values (memid, v_name);
fn、ln和v_name是varchar类型的变量。memid是整数类型的变量。 我是不是遗漏了什么

我用触发器来调用程序

触发码

DELIMITER $$
create trigger prof_name
after insert on member
for each row
begin
call profile_fullname(new.memberid);

END $$; 
DELIMITER ;
成员表结构: memberid整数, memfname varchar, memlname varchar

配置文件表结构: profid整数,
memberid整数。

默认情况下,MySQL中的
|
运算符是逻辑运算符。您将其用作concat,这就是我认为您使用Oracle的原因。作为逻辑运算符,它将把每个参数转换为一个逻辑表达式,该表达式的值为
0
1
。显然,它正在将它们转换为
0
s,这就是为什么表中会出现
0
。另一种选择是
1
,这不再有趣了

正确的解决方案是使用
concat()
而不是
|
。您还可以将系统变量
PIPES_设置为_CONCAT
以根据需要使用
|
,但通常仅当您试图使代码在数据库之间可移植时才进行设置

以下是一些例子:

update profile
    set fullName = (select concat(memFname, ' ', memLname) from member m where m.memberid = memid)
    where profile.memberid = memid;
如果您确实需要插入,它看起来如下所示:

insert into profile(memberid, fullname)
    select memid, concat(memFname, ' ', memLname)
    from member m
    where m.memberid = memid;

您使用的是Oracle语法,但您的问题被标记为mysql。请对其进行适当标记。它仍将全名值作为0插入DB@Wabbit . . . 编辑问题并显示
profile
member
的表格布局。