我需要在SQL中创建am索引,但是它需要通过只输入名称的一部分来显示记录。应创建索引以使用部分学生姓名检索学生信息(即如果名称为Johnanesburg;用户可以输入John)
我使用了下面的语法,但它无法正常工作
create index Student ON Student(SName)
SELECT * FROM Student WHERE StRegNo LIKE A%
go
答案 0 :(得分:3)
我认为你的问题出在这里:A%
尝试用撇号包装它。
SELECT *
FROM Student
WHERE StRegNo LIKE 'A%'
此外,在创建索引后,您可能需要GO
语句。
答案 1 :(得分:0)
您在SName
上创建的索引不会为您在StRegNo
创建的select语句提供尽可能多的好处。假设StRegNo
是Student
表中的主键,您可以尝试:
CREATE CLUSTERED INDEX IX_Student on Student(StRegNo)
SELECT *
FROM Student
WHERE StRegNo LIKE 'A%'
但是,您提供的SQL似乎与您的问题不一致。如果您想根据学生姓名进行搜索,那么您可能需要以下内容。
CREATE NONCLUSTERED INDEX IX_Student on Student(SName)
SELECT *
FROM Student
WHERE SName LIKE 'A%'
答案 2 :(得分:0)
Ardman对你的查询得到了正确的答案%A => '%一个'。至于索引,这是另一个没有索引可以帮助你的故事,也不能全文搜索。如果你想查找以@A开头的名字(即John%),有序索引可能有所帮助,但除此之外(即%bur%),你将进行全表扫描!