1. sql基础查询语句
3:
select 语文,数学,英语,政治,物理,化学,sum(语文+数学+英语+政治+物理+化学) 总分, sum(语文+数学+英语+政治+物理+化学)/6 平均分 from 成绩表
where 姓名 = '卢良红'
4:
select sum(语文),sum(数学),sum(英语),sum(政治),sum(物理),sum(化学),sum(语文+数学+英语+政治+物理+化学) 总分 from 成绩表
5:
select avg(语文),avg(数学),avg(英语),avg(政治),avg(物理),avg(化学),sum(语文+数学+英语+政治+物理+化学)/6 平均分 from 成绩表
6:
select 学号,姓名,语文,数学,英语,政治,物理,化学,sum(语文+数学+英语+政治+物理+化学) 总分,sum(语文+数学+英语+政治+物理+化学)/6 平均分,成员,职务 from 成绩表,地址表,家庭表 where 成绩表.学号=地址表.学号 and 地址表.编号= 家庭表.编号 and 语文>90 and 地址 like '%东阳%'
2. SQL的查询 考试题目求教 题目已写答案求判断!
你还有马甲。。。
第一个不对,更新的是学生的成绩,而不是c001得成绩
1.对选修了课程号为c001的学生成绩提高10%
此题本人做的答案请检查:updata 选课表 set 成绩=成绩*1.1 where 课程号='c001'
UPDATE 选课表 SET set 成绩=成绩*1.1 WHERE 学生号 IN (SELECT 学生号 FROM 选课表 WHERE 课程号='c001')
2.查询没有学生选修的课程名。
此题本人做的答案请检查:select 课程名 from 课程 where 课程名 not exists(select * from 选课表 where 选课表.课程号=课程表.课程号)
SELECT 课程名 from 课程 WHERE 课程号 NOT IN (SELECT DISTINCT 课程号 FROM 选课表)
3. correct
4.查询每个学生选修的门数及平均成绩。
此题本人做的答案请检查:select AVG(成绩),姓名 from 学生,选课 where 学生.学生号=选课.学生号 group by 姓名
SELECT COUNT(c.课程号), AVG(c.成绩)
FROM 学生 stu LEFT JOIN 选课 c ON stu.学生号 = c.学生号
GROUP BY stu.学生号
5.查询2003年以前借书的读者借书证号,姓名和单位。
此题本人做的答案请检查:select 借书证号,姓名,单位 from 读者 where 借书日期<=2003 and 读者.借书证号=借书.借书证号
SELECT 借书证号,姓名,单位 FROM 读者 WHERE IN (SELECT 借书证号 FROM 借书 WHERE 借书日期<=2003)
6.查询电子系没有借书的读者姓名
此题本人做的答案请检查: select 姓名,职称 from 读者 where 职称='电子系' and 借书证号 NOT exists(select 借书证号 from 借书 where 读者.借书证号=借书.借书证号)
此题我一直有一个疑惑 我目前查询电子系没有借书的读者姓名 没有借书 也就是借书证号为空或NULL 那么读者也有一个借书证号 借书也有一个借书证号 2个是相对应的,
但是我没用到借书表 只有了读者表的借书证号 需要在where语句后写入:借书证号=借书.借书证号 这个条件吗?
SELECT 姓名
FROM 读者 t
WHERE 单位 = '电子系' AND NOT EXISTS(SELECT 1 FROM 借书 WHERE 借书证号 = t.借书证号)
7.查询出至少有两名学生所选修的全部课程。
此题我做的不怎么好:select 姓名 from 学生 where 课程名 in (select 课程名,count(*) as 课程数 group by 姓名 having count(*)>=2
SELECT * FROM 课程 WHERE 课程号 IN (SELECT 课程号 FROM 选课 GROUP BY 课程号 HAVING COUNT(*) >=2)
8
@a, @b, @c是参数, 譬如@a = '123', @b = 'c001', @c = 90
然后begin后面是执行一个update操作,将参数对应起来就可以了。
真个存储过程对例子要做的就是
UPDATE 选课
set 成绩=90
where 学号= 123 and 课程号='c001'
明白了么
3. sql的查询语句
都是最基本的sql语句,先把创建表的给你。后面的太多了,有空再写。
(一)
1.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Dept]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Dept]
GO
CREATE TABLE [dbo].[Dept] (
[Dno] [Char] (4)NOT NULL primary key,
[Ename] [char] (20) NOT NULL ,
[Dnum ] [int] check(Dnum >=0)
UNIQUE (Ename)
) ON [PRIMARY]
GO
2.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Employee]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Employee]
GO
CREATE TABLE [dbo].[Employee] (
[Eno] [Char] (6)NOT NULL primary key,
[Dname] [char] (16) NOT NULL ,
[Esex ] [char](1) CHECK(Esex='F' OR Esex='M'),
[Eage] [Smallint] check(Dnum >=0),
[Esalary] [Money](1) check(Smallint >=16 and Smallint<=60),
[Ety] [char](15) DEFAULT'助教'),
[Dno] [char](4) FOREIGN KEY (Dno) REFERENCES Dept(Dno)
) ON [PRIMARY]
GO
4. SQL Server的四个查询语句,题目在内容里
select*from员工基本信息表where员工姓名like'张%'orderby入职日期desc
select*from员工基本信息表wheredatepart(month,出生日期)=datepart(month,dateadd(m,1,getdate()))
select部门编号,a.部门名称,b.人数from部门信息表ainnerjoin(
select员工所属部门,count(*)人数from员工信息表groupby员工所属部门)b
ona.部门名称=b.员工所属部门
orderby部门编号
update员工信息表set员工状态='离职'from(
select员工姓名,max(入职日期)最新入职日期from员工信息表groupby员工姓名havingcount(*)>1)a
where员工信息表.员工姓名=a.员工姓名and员工信息表.入职日期<>a.最新入职日期
你自己看看吧。闲来没事。哎。蛋疼。
5. 【急】如图题目:请写出以下操作的SQL语句。(1~10题)
--1.查询读者信息表中办证时间2004年以前包含2004年的男生信息
select * from [ 读者信息表]
where year([办证时间])<=2014 and [性别]='男'
--2.查询图书信息表中已经借出图书的书名和出版社
select [书名],[出版社]from [图书信息表]
where [图书状态]='借出'
--3.查询借阅信息表的全部信息
select * from [借阅信息表]
--4.查询图书信息表中书籍价格最便宜的三本书的书籍名称和书籍价格
select top (3) [图书名称],[价格] from [图书信息表]
order by asc
--5.按出版社分组查询统计桐念各出版社出版的书籍册数,显示出版社和出版册数
select [出版社],COUNT(*) as [出版册数] from [图书信息表]
group by [出版社]
--6.查询图书信息中“高等教育出版社”出版的书籍名称和作者姓名
select [书籍名称],[作者姓名] from [图书信息表]
where [出版社] ='高等教育出版社'
--7.查询借阅信息表中未归还图书的读者编号和书籍编号。未归还即还书日期为空
select [读者编号],[书籍编号] from [借阅信息表]
where [还书日期] is null and [借阅状态]='借出'
--8.查询读者信息表中悄碧姓李的读者信息
select * from [读者信息表]
where [读者姓名] like '李%'
--9.查询图书信息表中类别代码为‘001’的图书信息
select * from [图书信息表]
where [类别代码]='001'启轮举
--10.查询图书信息表中全部书籍的平均价格
select AVG([书籍价格]) as [平均价格]from [图书信息表]
6. 几道简单的SQL 2000查询分析器语句题目
7.select distinct e.age,e.sx,e.atitle,e.salary,e.addr
from employee as e,employee as em
where e.addr=em.addr
8.select *
from employee
where max(salary)
9.select sales.order_no
from sales
where sales.tot_amt>(select tot_amt
from sales
where sale_id=E0013 and order_date =1996/10/05)(我不知道你用什么软件编写的,时间类不好定义)
11.create view C_SH(cust_id,cust_name,customer.addr)
AS Select cust_id,cust_name,customer.addr
from customer
where customer.addr="上海"
(先发这几个,有点事,回来继续写)
7. 根据题目写出SQL查询语句
1.
SELECT
S#,SN
FROM
S
WHERE
S#
IN
(SELECT
S#
FROM
SC
WHERE
C#
IN
(SELECT
C#
FROM
C
WHERE
CN="收基础"))
2.
SELECT
SN,SD
FROM
S
WHERE
S#
IN
(SELECT
S#
FROM
SC
WHERE
C#=2)
3.
SELECT
SN,SD
FROM
S
WHERE
S#
NOT
IN
(SELECT
S#
FROM
SC
WHERE
C#=5)
4.
SELECT
SN,SD
FROM
S
WHERE
S#
IN
(SELECT
S#
FROM
SC
GROUP
BY
S#
HAVING
COUNT(*)
=
(SELECT
COUNT(*)
FROM
C))
5.SELECT
COUNT(DISTINCT
S#)
FROM
SC
6.
SELECT
SN,SD
FROM
S
WHERE
S#
IN
(SELECT
S#
FROM
SC
GROUP
BY
S#
HAVING
COUNT(*)>5)
8. SQL 查询语句期中考试题2
--1.分别查询学生表和学生修课表中的全部数据。
SELECT * FROM student--查询学生表
SELECT * FROM course--查询课程表
--2.查询成绩在70到80分之间的学生的学号、课程号和成绩。
SELECT Sno 学号,Cno 课程号,Grade 成绩
FROM SC
WHERE Grade BETWEEN 70 AND 80
--3.查询C01号课程成绩最高的分数
SELECT TOP 1 Grade
FROM SC
WHERE Cno='C01'
ORDER BY Grade DESC--降序DESC,升序ASC
--4.查询学生都选修了哪些课程,要求列出课程号。
SELECT Cname AS 学生选修的课程,Cno AS 课程号
FROM course
WHERE Cno IN(SELECT DISTINCT Cno FROM SC)--DISTINCT用来去除重复
--5.查询Northwind数据库中orders表的OrderID、CustomerID和OrderDate,
--并将最新的定购日期(OrderDate)列在前边。
USE Northwind
GO
SELECT OrderID,CustomerID,OrderDate
FROM orders
ORDER BY OrderDate DESC--降序DESC,升序ASC
--6.查询Northwind数据库中orders表的ShipCountry列以B,C,D,F --//ShipCountry BCDF
--开始且第三个字符为"a"的OrderID、CustomerID和ShipCountry的信息。//OrderID、CustomerID第三个字符为"a"
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry FROM orders
WHERE ShipCountry LIKE '[BCDF]_a%'--_下划线表示任意一个字符,%表示一个或多个字符
--7.查询Northwind数据库中orders表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字
--母是"a"的OrderID、CustomerID和ShipCountry的信息。
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry
FROM orders
WHERE ShipCountry LIKE '[^ABCDEF]%a'
--8.查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。
SELECT AVG(Grade) 平均成绩,MAX(Grade) 最高成绩,MIN(Grade) 最低成绩
FROM SC
WHERE Cno='C02'
--9.统计每个系的学生人数。
SELECT Sdept 系别,COUNT(*) 人数
FROM student
WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)
GROUP BY Sdept
--10.统计每门课程的修课人数和考试最高分。
SELECT Cname 课程名,COUNT(*) 修课人数,MAX(Grade) 考试最高分
FROM SC,course
WHERE SC.Cno IN(SELECT DISTINCT Cno FROM SC ) AND course.Cno=SC.Cno
GROUP BY course.Cname
--11.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
SELECT student.Sname 学生姓名,student.Sno 学生学号,COUNT(SC.Sno) 选课门数
FROM student
inner join SC ON SC.Sno=student.Sno
GROUP BY student.Sname,student.Sno
ORDER BY COUNT(SC.Sno) ASC
--12.统计选修课的学生总数和考试的平均成绩。
SELECT COUNT(DISTINCT(Sno)) AS 学生总数,AVG(Grade) AS 平均成绩
FROM SC --//用DISTINCT消除重复的行
--13.查询选课门数超过2门的学生的平均成绩和选课门数。
SELECT Student.Sname,AVG(Sc.Grade) 平均成绩,COUNT(SC.Sno) 选课门数
FROM SC
--内联接join或inner join,内联系是比较运算符,只返回符合条件的行
JOIN Student ON (SC.Sno = Student.Sno)
JOIN Course ON (SC.Cno = Course.Cno)
GROUP BY Student.Sname
HAVING COUNT(distinct Course.Cno) >2--分组条件
--14.列出总成绩超过200分的学生,要求列出学号、总成绩。
SELECT Sno 学号,SUM(Grade) 总成绩
FROM SC
GROUP BY Sno
HAVING SUM(Grade)>200
--15.查询pubs数据库的titles表中每类图书的平均价格超过12.0元的书的类型(Type)、
--平均价格和最高价格。
USE pubs
GO
SELECT Type AS 书的类型,AVG(price) AS 平均价格,MAX(price) AS 最高价格
FROM titles
GROUP BY Type
HAVING AVG(price)>12.0
--16.查询pubs数据库的titles表中每类图书中图书的数目超过3本的图书的总价格。
USE pubs
GO
SELECT 图书类型=Type,图书的数目=count(Type),图书的总价格=SUM(price)
FROM titles
GROUP BY Type
HAVING count(Type)>3
--17.查询选修了c02号课程的学生的姓名和所在系。
SELECT Sname 学生姓名,Sdept 所在系,SC.Cno AS 选修课程
FROM student
inner join SC ON student.Sno=SC.Sno
WHERE SC.Cno='C02'
--18.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
SELECT Sname 学生姓名,SC.Cno 课程号,SC.Grade 成绩
FROM student
inner join SC ON student.Sno=SC.Sno--内连接表SC查询
WHERE SC.Grade>80
ORDER BY SC.Grade DESC
--19.查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。
SELECT Sname 姓名,Ssex 性别,SC.Grade 成绩
FROM student
inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname='数据库基础') --显示成绩的条件
AND student.Sno=SC.Sno --显示成绩的学生的学号
WHERE Sdept='计算机系' AND Ssex='男'
--20.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
--这题使用到了表的自连接,所以需要给表取两个别名,如A和B
SELECT A.Sname 年龄相同的学生的姓名,A.Sage 年龄
FROM student A
inner join student B ON A.Sage IN(SELECT Sage FROM student WHERE A.Sage=B.Sage AND A.Sname!=B.Sname)
GROUP BY A.Sname,A.Sage
ORDER BY A.Sage
--21.查询哪些课程没有人选,要求列出课程号和课程名。
SELECT Cno AS 课程号,Cname AS 课程名
FROM course
WHERE Cno NOT IN(SELECT DISTINCT SC.Cno FROM SC)
--22.查询有考试成绩的所有学生的姓名、修课名称及考试成绩
--要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。
SELECT student.Sname AS 有考试成绩的学生的姓名,course.Cname AS 修课名称,SC.Grade AS 考试成绩
INTO [new_sc] --将查询结果放入新表new_sc中
FROM student,course,SC
WHERE SC.Grade IS NOT NULL AND student.Sno=SC.Sno AND course.Cno=SC.Cno
--23.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,
--并要求将这两个查询结果合并成一个结果集,
--并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。
--//此题用到了并union查询
SELECT Sdept 系名,Sname 姓名,Ssex 性别,course.Cname 修课名称,SC.Grade 修课成绩
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='信息系'
UNION
SELECT Sdept 系名,Sname 姓名,Ssex 性别,course.Cname 修课名称,SC.Grade 修课成绩
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='计算机系'
或
select sdept, sname,ssex,cname,grade from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno and (sdept='信息系' or sdept='计算机系')
--24.用子查询实现如下查询:
--(1) 查询选修了C01号课程的学生的姓名和所在系。
SELECT Sname AS 选修了C01号课程的学生的姓名,Sdept AS 所在系
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C01')
--(2) 查询数学系成绩80分以上的学生的学号、姓名。
SELECT Sno AS 数学系成绩80分以上的学生的学号,Sname AS 姓名
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>80)
AND Sno IN(SELECT Sno FROM student WHERE Sdept='数学系')
--(3) 查询计算机系学生所选的课程名.
SELECT Cname AS 计算机系学生所选的课程名
FROM course
WHERE
course.Cno IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept='计算机系'))
--25.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现://////////////?????/
--(1) 在插入数据过程中建表。
--使用SELECT INTO插入数据的方法,是在插入数据的过程中建立新表
SELECT student.Sname AS 学生名字,course.Cname AS 选修课程,SC.Cno AS 课程编号
INTO [SC_Info1]--将计算机系成绩高于80分的学生的修课情况插入到表SC_Info1中
FROM student,course,SC
WHERE student.Sdept='计算机系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno
--(2) 先建一个新表,然后再插入数据。
--创建表SC_Info2
CREATE TABLE SC_Info2
(
Sname char(7),
Cname char(20),
Cno char(10)
)
--往表SC_info2插入查询得到的结果
INSERT SC_Info2
SELECT student.Sname AS 学生名字,course.Cname AS 选修课程,SC.Cno AS 课程编号
FROM student,course,SC
WHERE student.Sdept='计算机系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno
--26.删除修课成绩小于50分的学生的修课记录
DELETE SC WHERE Grade<50 OR Grade IS NULL
--27.将所有选修了"c01"课程的学生的成绩加10分。
UPDATE SC
SET Grade=Grade+10
WHERE Cno='C01'
9. SQL的查询语句(题有点多,所以100分)
成都信息工程学院的吧
我有几道题的:
1. 编写程序实现[1,40]的奇数平方和赋x,偶数平方和赋y,并输出x,y的值。
declare @a int,@b int ,@X int,@Y int,@sum int,@c int,@d int
set @a=1
set @b=0
set @X=0
while @a<=40
begin
set @b=@a*@a
set @X=@X+@b
set @a=@a+2
end
set @c=2
set @d=0
set @Y=0
while @c<=40
begin
set @d=@c*@c
set @Y=@Y+@d
set @c=@c+2
end
select @X as 奇数,@Y as 偶数
2. 编写程序计算1-5000之间(含1和5000)所有能被9整除的数的个数及总和。
declare @n int,@sum int
set @n=9
set @sum=0
while @n<=5000
begin
set @sum=@sum + @n
set @n=@n+9
end
select @sum
3. 计算1-9999以内的所有桐慧完全平方数(如36=6*6,则称36为完全平方数)的总和及个数。
declare @n int,@sum int ,@i int,@count int
set @i=1
set @count=-1
set @sum=0
set @n=0
while @n<=9999
begin
set @sum=@sum+@n
set @n=@i*@i
set @i=@i+1
set @count=@count + 1
end
select @count,@sum
4. 通过while循环计算10!。
declare @n int ,@sum int
set @n=1
set @sum=1
while @n<=10
begin
set @sum=@sum*@n
set @n=@n+1
end
select @sum
5. 完成程序依次显示大写字母A~Z(一行显示一个字母)。
declare @i int
set @i=0
while @i<26
begin
print char(ascii('A')+ @i)
set @i=@i+1
end
6. 完成程序依次显示大写字母Z~A(一行显示一个字母)。
declare @i int
set @i=0
while @i<26
begin
print char(ascii('Z')-@i)
set @i=@i+1
end
7. 显示今天是第几季度,输出格式为“第一季度”、“第二季度”、“第三季度”、“第四季度”。
declare @n varchar
set @n=(select datename(q,getdate()))
print '第'+@n+'季度'
8. 查询2008级所有同学的学号、总评成绩的平均分局掘答、等级(90分以上A,80-90为B,70-80为C,60-70为D,60分以下为E),并按照等级升序输出(即先输出A级学生,再输出B级学生,最后输出E级学生)。
select 学号,avg(总评成绩),
(case when avg(总评成绩)>=90 then 'A'
when avg(总评成绩)>=80 and avg(总评成绩)<90 then 'B'
when avg(总评成绩)>=70 and avg(总评成绩)<80 then 'C'散蔽
when avg(总评成绩)>=60 and avg(总评成绩)<70 then 'D'
else 'E'end)等级
from 成绩 where 年级=2008
group by 学号
order by avg(总评成绩) desc
9. 通过while循环绘制如下图形:
*
***
*****
*******
*********
declare @i int
set @i=1
while @i<=5
begin
print space(5-@i)+replicate('*',2*@i-1)
set @i=@i+1
end
10. 数据库,SQL查询题目
--基础题
--1.查询读者最喜爱的3种图书分类号,即借阅表中出现最多的3类图书分类号
SELECT TOP 3 [分类号] FROM [图书] JOIN [借阅] ON [图书].[图书编号]=[借阅].[图书编号]
GROUP BY [分类号] ORDER BY COUNT(*) DESC
--附加题
--1.查询小于20岁的读者最喜欢的3类图书
SELECT TOP 3 [书名] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号]
JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]
WHERE [年龄]<20 GROUP BY [书名] ORDER BY COUNT(*) DESC
--2.查询至少借阅了 宁静 所借图书(书名相同)的人的姓名
SELECT [姓名] FROM [读者] WHERE [姓名]<>'宁静' AND [借书证号] IN(SELECT [借书证号] FROM [借阅]
WHERE [图书编号] IN(SELECT [图书编号] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号] WHERE [姓名]='宁静'))
--3.查询借阅了多于3本书且每本书价均高于60的读者的借书证号
SELECT [借书证号]
FROM [借阅] JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]
WHERE [单价]>60 GROUP BY [借书证号] HAVING COUNT(*)>3
GO
--4.假定读者表中所有人姓名均不多于4个汉字,请建立一个查询语句,要求根据名字中任意1个或两个或3个或4个汉字,即可找到该读者的详细信息(即完全模糊查询)
CREATE PROCEDURE CX
@XM VARCHAR(8) AS
IF LEN(@XM)=1 SELECT * FROM [读者] WHERE @XM LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=2 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=3 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=4 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
GO