什么是在R-Z之间显示姓氏的SQL查询,它只能显示第一个名字的第一个首字母

时间:2018-01-24 17:15:54

标签: sql sql-server

这是我的代码,我该如何制作它所以它只显示名字的第一个首字母?

    SELECT *
    FROM HR.Employees E
    WHERE LEFT(E.firstname,1) BETWEEN 'R' AND 'Z'
    ORDER BY E.lastname, E.firstname

2 个答案:

答案 0 :(得分:2)

正如评论中所说,你的谓词是错误的。我用一些垃圾数据构建了一个临时表,下面的查询按你的意愿工作。

create table #employees  (
    firstname varchar(20),
    lastname varchar(20))

insert into #employees (firstname, lastname) values ('tom', 'jones')
insert into #employees (firstname, lastname) values ('jane', 'smith')
insert into #employees (firstname, lastname) values ('bob', 'roberts')
insert into #employees (firstname, lastname) values ('jon', 'doe')

SELECT
    firstname_firstinitial = LEFT(LTRIM(firstname), 1),
    lastname
FROM #employees E
WHERE LEFT(LTRIM(lastname),1) BETWEEN 'R' AND 'Z' -- change this to lastname
ORDER BY E.lastname, E.firstname

答案 1 :(得分:0)

使用left function返回第一个字符,就像在where子句中一样。

SELECT LEFT(E.firstname, 1)
FROM HR.Employees E
WHERE LEFT(E.firstname, 1) BETWEEN 'R' AND 'Z'
ORDER BY E.lastname, E.firstname