查询以获取所有具有“A”的员工姓名作为他们名字中的中间人物
例如:- BRAKE、CRANE 等。
在我的员工表中,我有 ENAME、ENO、JOB、SALARY
。
在这里,我想提取出那些名称中以“A”为中心字符的名称。
如果ename的长度是奇数,则居中1,所以我需要检测ename中的奇数和偶数位置。
所以,我尝试了这个,但卡住了,所以我可以期待这里的帮助吗?
SELECT ENAME
FROM EMPLOYEES
WHERE A IN
(SELECT ENAME,
SUBSTR(ENAME,LENGTH(ENAME)/2+1,1)
FROM EMPLOYEES)
;
E.g:- BRAKE,CRANE etc.
In my employees table , I have ENAME,ENO,JOB,SALARY
.
Here, I want to extract out those enames that have an 'A' as the center character in their name.
If length of ename is odd,then center one, so i need to detect odd and even position in ename.
So, I tried this, but stuck up ,so can i expect a help from here?
SELECT ENAME
FROM EMPLOYEES
WHERE A IN
(SELECT ENAME,
SUBSTR(ENAME,LENGTH(ENAME)/2+1,1)
FROM EMPLOYEES)
;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这适用于奇数长度的字符串,我认为这就是您想要的。下次请不要再用这样的帽子了。我花了5分钟才读完你的帖子。
This works for odd length strings, which I think is what you wanted. Next time please don't use caps like that. It took me 5 minutes just to read your post.
这首先检查他们的名字中是否有奇数个字母,然后进行检查。
第二部分检查中间 2 个字母的偶数长度,看看其中一个是否是 A。
这是 SQL Server 语法,但我认为 Oracle 应该类似。
This checks first that they have an odd number of letters in the name, then does the check.
The second part checks the middle 2 letters for even-numbered lengths to see if either is A.
This is SQL Server syntax but I think Oracle should be similar.
我想这就是你的意思:
你使用什么数据库服务? (例如在 MS SQL 服务器中,您必须使用 Len)
I think this is what you mean:
What Database service are you using? (for instance in MS SQL server you must use Len)
您甚至可以尝试这个:
select ename from emp where substr(ename,ceil((length(ename))/2),1)='A';
这对于偶数和奇数都适用长度字符串...希望有帮助。
You may even try this one:
select ename from emp where substr(ename,ceil((length(ename))/2),1)='A';
This will work for both even and odd length strings...hope it helped.