由于某种原因,我无法将sql表中的名字和姓氏结合起来。
这是我尝试过的:
SELECT firstname, lastname, firstname + ' ' + lastname as fullname from students;
由于某种原因,它在全名下的每一行的结果“ 0”中显示,但是按正常方式填充了firstname和lastname列。
请帮助。 ***请注意,我不想使用CONCAT()函数
此处的屏幕截图: table
预先感谢
答案 0 :(得分:5)
您正在尝试添加两个字符串。那没有道理。尽管有些(实际上是一个,因为SQL Server是基于Sybase的)数据库重载+
表示字符串连接,但是正确的方法是:
concat(firstname, ' ', lastname) as fullname
或者我更喜欢,因为它可以干净地处理NULL
值:
concat_ws(' ', firstname, lastname) as fullname
或在支持ISO / ANSI运算符的数据库中:
(firstname || ' ' || lastname ) as fullname
除非已设置模式PIPES_AS_CONCAT
(请参见here),否则这在MySQL中不起作用。
在MySQL中,您将得到0
,因为+
被视为加法,并且两个字符串(以静默方式)基于前导数字转换为数字。由于两者均以非数字开头,因此它们都转换为0
。
答案 1 :(得分:3)
只是个猜测,但是您的SQL版本可能将||
用作串联运算符:
SELECT
firstname,
lastname,
firstname || ' ' || lastname AS fullname
FROM students;
您看到零的原因可能是由于数据库将字符串列转换为数字,以使+
运算符有意义。