mysql:在一个变量中连接两个字符串
因此,我编写了一个过程,将两个字符串连接在一个变量中,然后将其存储在数据库中。当我运行这个过程时,它工作得很好,但是它没有将变量存储在数据库中。而是将其存储为0。 这是我使用的代码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
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
的表格布局。