在一次面试中,我被问到一个来自oracle sql的问题,这似乎是一个简单的问题,但我不知道如何回答,有人能帮助我吗?
如果有像 "newyork is a beautiful city "这样的字符串在一个colum中。
select column_name from table_name;
会导致
newyork is a beautiful city
查询需要什么,才能将输出结果作为一个字符串,包含所有的首字母,也就是说,输出结果应该是...。
niabc
如果你不关心维护输出的情况,这可以很简单地完成,而不需要递归。
SQL> select
2 translate(
3 initcap('newyork is a BEAUTIFUL city')
4 , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'
5 , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6 )
7 from dual
8 /
TRANS
-----
NIABC
SQL>
如果句子中包含数字,标点符号等,那么我们就必须将这些字符添加到第一个替换字符串中,这可能会变得相当乏味。
你可以使用下面描述的分割函数 此处 (用空格代替逗号),以便将句子按空格分割。然后,你可以像AJ说的那样使用substr函数,因为分割的结果可以让你从每一个 "片段 "的第1字符到第2字符开始。
这毕竟涉及到substr,对吧?
PS. 我宁愿在上面一层处理结果,而不是在查询过程中。但这是我的想法。
也许这将涉及到使用函数 子串?