SQL SERVER查询按FirstName,Lastname选择

时间:2013-12-10 09:54:08

标签: sql sql-server

我的Products表有近10,000条记录,我希望“artist”(varchar)列名按Firstname and Lastname排序。在where子句中,我发送名字或姓氏的首字母。这个查询适用于少数记录但不适用于所有记录,可能是因为记录的模式? 这是我的查询

SELECT * FROM Products WHERE SUBSTRING(artist, 1, 1) Like 'C'

不归还记录......我想要的方式......桌子(艺术家)专栏的记录很少

Comtesse Mathilde duMonceau de Bergendael
Mulholland, S.J.
Cleminson
NULL
Samuel Jackson

2 个答案:

答案 0 :(得分:1)

您的LIKE条款错误。此外,你不应该在这里使用LIKE,因为你只是用一个字母过滤:

.... WHERE LEFT(artist, 1) = 'C'

编辑 LEFT实际上比SUBSTRING更快。

此外,您不能指望任何不以C开头的内容,因为您明确只要求以C开头的条目。

我猜你真正需要的是以下内容:

.... WHERE LEFT(FirstName, 1) = 'C' OR LEFT(LastName, 1) = 'C' ORDER BY LastName, Firstname

如果您只有Artist列,事情会变得复杂,因为您实际上需要使用LIKE,这会让事情变得非常缓慢

.... WHERE Artist LIKE `%C%`

返回任何艺术家,其名称在名称中的任何位置都包含C。这也将返回这些:

Clemens Test
Test Cutler
Arachnophobia

答案 1 :(得分:0)

使用此where子句

where left(artist, 1) = 'C'

where artist like 'C%'