#数据库查询 数据库新手一枚,球球大佬们垂怜

问题:从学生表中查询联系方式的最后一位不是4、5、6的学生信息

相关代码:
CREATE TABLE Student (
Sno CHAR(8) PRIMARY KEY, /*住宿学生学号*/
Sname VARCHAR(10) NOT NULL,/*住宿学生姓名*/
Ssex CHAR(2) DEFAULT '男'CHECK(Ssex IN('男', '女')),/*学生性别*/
Sspec VARCHAR(20) NOT NULL,/*学生专业*/

Sphone CHAR(11) NULL,/*联系方式*/
Sdate DATETIME NOT NULL,/*新生搬入时间*/
Dbno CHAR(2) NOT NULL,/*学生住的楼号*/
Dno CHAR(3) NOT NULL,/*学生住的宿舍号*/
FOREIGN KEY (Dbno) REFERENCES Dormitory(Dbno),
FOREIGN KEY (Dno) REFERENCES Dormitory(Dno)
)

insert into Student 

values('001', '李浩', '男','计算机', 1234,'2016-08-30',1,101)
insert into Student
values('003', '陈光', '男','信息管理', 5678,'2014-08-30',2,250)
insert into Student
values('006', '郑琦', '女','电子商务', 1112,'2015-08-30',4,250)
insert into Student
values('008', '张颐', '女','计算机', 1314,'2016-08-30',6,121)

sql

3个回答

可以使用字符串截取函数RIGHT('字段名称','要截取的右边字符数'),where 条件类似如下:
where RIGHT(Sphone,1) not in ('4','5','6')

第一种方案:
#从学生表中查询联系方式的最后一位不是4、5、6的学生信息
SELECT
tt.*
FROM
student tt
WHERE
EXISTS (
SELECT
1
FROM
student t2
WHERE
t2.sno = tt.sno
AND RIGHT ( t2.sphone, 1 ) <> '4'
AND RIGHT ( t2.sphone, 1 ) <> '5'
AND RIGHT ( t2.sphone, 1 ) <> '6'
)

第二种解决方案:
    #从学生表中查询联系方式的最后一位不是4、5、6的学生信息

SELECT
tt.*
FROM
student tt
WHERE RIGHT ( tt.sphone, 1 ) NOT IN ('4','5','6')

select * from student where substr(sphone,-1) not in ('4','5','6')

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问