这是我的代码,我该如何制作它所以它只显示名字的第一个首字母?
SELECT *
FROM HR.Employees E
WHERE LEFT(E.firstname,1) BETWEEN 'R' AND 'Z'
ORDER BY E.lastname, E.firstname
答案 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