首页 > 试题广场 >

获取employees中的first_name

[编程题]获取employees中的first_name
  • 热度指数:82841 时间限制: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 Christian  
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中的first_name,并按照first_name最后两个字母升序进行输出。
以上示例数据的输出如下:
first_name
Christian  
Tzvetan
Bezalel       
Duangkaew
Georgi
Kyoichi
Anneke
Sumant
Mary
Parto      
Saniya
示例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');

输出

Chirstian
Tzvetan
Bezalel
Duangkaew
Georgi
Kyoichi
Anneke
Sumant
Mary
Parto
Saniya
本题考查 substr(X,Y,Z) 或 substr(X,Y) 函数的使用。其中X是要截取的字符串Y是字符串的起始位置(注意第一个字符的位置为1,而不为0),取值范围是±(1~length(X)),当Y等于length(X)时,则截取最后一个字符;当Y等于负整数-n时,则从倒数第n个字符处截取。Z是要截取字符串的长度,取值范围是正整数,若Z省略,则从Y处一直截取到字符串末尾;若Z大于剩下的字符串长度,也是截取到字符串末尾为止。
SELECT first_name FROM employees ORDER BY substr(first_name,length(first_name)-1) 
SELECT first_name FROM employees ORDER BY substr(first_name,-2) 
编辑于 2017-07-23 15:18:39 回复(16)
更多回答
这个题就有点毛病,它上边展示的结果只是按照倒数第二给字母的顺序来进行排序的,和最后一个字母后没有关系
发表于 2021-02-25 09:33:36 回复(1)
select first_name from employees order by substr(first_name,length(first_name)-1)

本题主要考察substr函数的使用,substr(字段名,起始位置,截取长度),这里需要注意的是截取的是后2位,所以应用到了一个小技巧length,总长度-1就是倒数第二位。
发表于 2021-09-05 21:08:16 回复(0)
SELECT first_name
FROM employees
order BY SUBSTRING(first_name,-2,2) 
截取first_name倒数两个字符取两位字符再按照这个排序即可
发表于 2021-09-03 16:09:28 回复(0)
select first_name from employees 
order by (select right(first_name,2 )) ASC
right也可


发表于 2021-02-18 16:30:25 回复(0)
先按倒数第二位排在此基础上再按最后一位排
SELECT
    first_name
FROM
    employees
ORDER BY
    SUBSTR(first_name,LENGTH(first_name)-1),SUBSTR(first_name,-1);
发表于 2021-01-13 19:42:10 回复(0)
select first_name from employees
order by substr(first_name,-2);

发表于 2020-12-23 22:36:20 回复(0)
MySQL支持right和substr,但sqlite只支持subst
发表于 2020-07-23 16:47:41 回复(0)
#注意一下sql中应该是从1开始的,所以按倒数两位排序应该是n-1开始,往后两位
select first_name
from employees
order by substr(first_name,length(first_name)-1,2) asc;

发表于 2020-06-06 17:38:53 回复(0)
在Mysql中:
select first_name
from employees
order by substring(first_name, (length(first_name)-1), 2) asc;
解题思路:使用字符串截取函数subtring(对象字符串,截取的起始位置,截取的字符数),截取出最后两位字符,然后使用order by …asc进行升序排序。
在SQLite中,字符串截取函数为substr(对象字符串,截取的起始位置,截取的字符数)。
发表于 2019-12-01 16:19:14 回复(1)
本题考查 substr(X,Y,Z) 或 substr(X,Y) 函数的使用。其中X是要截取的字符串Y是字符串的起始位置(注意第一个字符的位置为1,而不为0),取值范围是±(1~length(X)),当Y等于length(X)时,则截取最后一个字符;当Y等于负整数-n时,则从倒数第n个字符处截取。Z是要截取字符串的长度,取值范围是正整数,若Z省略,则从Y处一直截取到字符串末尾;若Z大于剩下的字符串长度,也是截取到字符串末尾为止。
1
SELECT first_name FROM employees ORDER BY substr(first_name,length(first_name)-1) 
1
SELECT first_name FROM employees ORDER BY substr(first_name,-2) 
发表于 2019-08-04 15:09:33 回复(0)
SELECT first_name FROM employees
ORDER BY substr(first_name, length(first_name) - 1, 2);

发表于 2019-06-24 14:53:06 回复(0)
select first_name 
from employees
order by substr(first_name,length(first_name)-1) asc
发表于 2019-07-28 00:17:55 回复(0)

substr(string,start,length)
string - 指定的要截取的字符串。
start - 必需,规定在字符串的何处开始。正数 - 在字符串的指定位置开始,负数 - 在从字符串结尾的指定位置开始,0 - 在字符串中的第一个字符处开始。
length - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。

例如:select substr('abcdefg',3,4) from dual; 结果是cdef
            select substr('abcdefg',-3,4) from dual; 结果efg

注意:字符串中的第一个位置始终为1。以下两个sql查询的结果相同:

例如:select substr('abcdefg',0,3) from dual; 结果是abc

            select substr('abcdefg',1,3) from dual; 结果是abc

发表于 2017-08-23 21:18:53 回复(0)
select first_name from employees
order by substr(first_name,length(first_name)-1,2) 
substr(字符串,起始位置,长度)
起始位置:截取的子串的起始位置(注意:字符串的第一个字符的索引是1)。值为正时从字符串开始位置 开始计数,值为负时从字符串结尾位置开始计数。
长度:截取子串的长度
发表于 2017-08-31 11:28:26 回复(5)
方法一:right(str, num) 函数。从右边开始截取str字符串num长度
select first_name from employees order by right(first_name, 2)
方法二:substr(x,y)函数。截取字符串x从y位置开始z长度,y为负数从末尾开始计算
select first_name from employees order by substr(first_name, -2)
    
select first_name from employees order by substr(first_name, length(first_name)-1);



编辑于 2021-03-27 16:09:25 回复(1)
MySQL 直接利用right函数:

SELECT first_name FROM employees ORDER BY RIGHT(first_name ,2);
发表于 2019-07-08 09:22:21 回复(1)
select first_name from employees group by right(first_name,2);
mysql中可以。。。系统通不过。
发表于 2017-08-18 19:58:04 回复(7)
本题可以通过:
SELECT first_name FROM employees 
ORDER BY substr(first_name,-2,2) asc;

mysql可行:
SELECT first_name from employees 
order by right(first_name, 2);



发表于 2020-05-17 20:49:35 回复(0)
select first_name
from employees
order by right(first_name,2), right(first_name,1)
发表于 2022-04-17 19:39:12 回复(0)

问题信息

难度:
196条回答 16115浏览

热门推荐

通过挑战的用户

查看代码