首页 > 试题广场 >

将employees表的所有员工的last_name和fir

[编程题]将employees表的所有员工的last_name和fir
  • 热度指数:164063 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
现有员工表employees如下:
emp_no birth_date first_name last_name gender hire_date
10001 1953-09-02 Georgi     
Facello   
M 1986-06-26
10002
1964-06-02
Bezalel    
Simmel    
F 1985-11-21
10003
1959-12-03 Parto
Bamford
M 1986-08-28
10004
1954-05-01 Chirstian
Koblick
M 1986-12-01
10005
1955-01-21 Kyoichi Maliniak M 1989-09-12
10006
1953-04-20 Anneke Preusig F 1989-06-02
10007 1957-05-23 Tzvetan Zielinski F 1989-02-10
10008
1958-02-19 Saniya Kalloufi M 1994-09-15
10009
1952-04-19
Sumant Peac F 1985-02-18
10010
1963-06-01 Duangkaew Piveteau F 1989-08-24
10011
1953-11-07 Mary Sluis F 1990-01-22
请将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分。
(注:sqllite,字符串拼接为 || 符号,不支持concat函数,mysql支持concat函数)。

输入描述:


输出描述:
Name
Facello Georgi
Simmel Bezalel
Bamford Parto
Koblick Chirstian
Maliniak Kyoichi
Preusig Anneke
Zielinski Tzvetan
Kalloufi Saniya
Peac Sumant
Piveteau Duangkaew
Sluis Mary
示例1

输入

drop table if exists  `employees` ; 
CREATE TABLE `employees` (
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` char(1) NOT NULL,
  `hire_date` date NOT NULL,
  PRIMARY KEY (`emp_no`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');

输出

Facello Georgi
Simmel Bezalel
Bamford Parto
Koblick Chirstian
Maliniak Kyoichi
Preusig Anneke
Zielinski Tzvetan
Kalloufi Saniya
Peac Sumant
Piveteau Duangkaew
Sluis Mary
不同数据库连接字符串的方法不完全相同,MySQL、SQL Server、Oracle等数据库支持CONCAT方法,而本题所用的SQLite数据库只支持用连接符号"||"来连接字符串
SELECT last_name||" "||first_name AS Name FROM employees

发表于 2017-07-18 17:05:57 回复(6)
更多回答
select last_name||" "||first_name as Name
from employees
发表于 2022-04-16 14:26:49 回复(2)
select last_name||" "||first_name as name  from employees
或者
select concat_ws(' ', last_name, first_name) as Name
from employees


发表于 2021-10-05 21:10:37 回复(0)
SELECT CONCAT(last_name,' ',first_name) as name from   employees 
发表于 2021-07-29 23:38:48 回复(0)
#select e.last_name||' '||e.first_name as name from employees as e
为什么第一行代码无法通过呢...
select concat(last_name,' ',first_name) as Name from employees
使用了concat()连接反而通过了,题目命名说不能使用concat(),为什么还能通过呢?
发表于 2021-05-07 10:13:53 回复(3)
select (last_name||' '||first_name) as Name
from employees e

发表于 2020-09-25 09:02:28 回复(0)
Myslq:select concat(last_name,concat(' ',first_name)) name from employees;
                (Mysql写法没问题,但题中会报错)
Oracle: select last_name ||' '|| first_name name from employees;

编辑于 2019-08-13 15:29:38 回复(0)
select last_name || ' ' || first_name as Name
from employees;
-- || 拼接的连接符号
发表于 2019-09-15 23:04:48 回复(0)
 select last_name||" "||first_name as name from employees
||连接字符串
发表于 2017-08-30 15:17:23 回复(0)
MySQL、SQL Server、Oracle等数据库支持CONCAT方法,
而本题所用的SQLite数据库只支持用连接符号"||"来连接字符串 

CONCAT方法:
select CONCAT(CONCAT(last_name," "),first_name) as name  from employees
或者
select CONCAT(last_name," ",first_name) as name  from employees

本题中使用:
select last_name||" "||first_name as name  from employees

编辑于 2018-11-06 10:57:47 回复(7)
两种:
1、select CONCAT(last_name,' ',first_name) name from employees

2、select
concat_ws(' ',last_name,first_name) as Name
from employees
发表于 2021-10-29 10:00:43 回复(0)
所以就没人吐槽名字居然是last name在前first name在后吗
SELECT (e.last_name || ' ' ||  e.first_name) AS Name
FROM employees e
发表于 2020-07-17 10:25:31 回复(10)
Mysql 数据库可以使用CONCAT或者CONCAT_WS两种函数进行拼接,但是SQLLite得使用||进行拼接
发表于 2017-11-17 14:54:10 回复(0)

contcat_ws(separator,str1,str2,...)

contcat_ws() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
注意:
如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

如连接后以逗号分隔 
mysql> select concat_ws(',','11','22','33');

+-------------------------------+
| concat_ws(',','11','22','33') |
+-------------------------------+
| 11,22,33 |
+-------------------------------+
1 row in set (0.00 sec)

和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL 
mysql> select concat_ws(',','11','22',NULL);
+-------------------------------+
| concat_ws(',','11','22',NULL) |
+-------------------------------+
| 11,22 |
+-------------------------------+
1 row in set (0.00 sec)

发表于 2021-11-11 09:21:00 回复(0)
--在sqlservr测试能得到符合题目要求的数据,为啥通不过
select {fn concat({fn concat(last_name,' ')},first_name)} as Name from employees

发表于 2017-10-13 09:16:59 回复(3)
select concat(last_name,' ',first_name) name from employees

发表于 2021-10-06 16:40:34 回复(0)
SELECT concat(last_name,concat(' ',first_name))
FROM employees;
发表于 2021-03-28 10:20:30 回复(0)
select
concat_ws(' ',last_name,first_name) as Name
from employees
mysql解法

发表于 2021-03-26 17:12:16 回复(4)
简而言之就是这里不支持concat函数,用的是||
发表于 2020-02-27 10:32:06 回复(0)
1、用concat函数
2、last_name和first_name 要注意顺序
3、中间要有空格,加上' '

select concat(last_name,' ',first_name)  name
from employees

发表于 2022-07-07 09:59:47 回复(0)