我在接受采访时被问到,来自oracle sql的一个问题。这似乎是一个简单的问题,但我没有回答的答案。有人帮忙吗?
如果在列中有“newyork is a beautiful city”这样的字符串。
select column_name from table_name;
将导致
newyork is a beautiful city
将输出作为包含所有首字母的字符串所需的查询是什么。 即输出应为
niabc
答案 0 :(得分:7)
如果您不关心维护输出的情况,这可以非常简单地完成而无需递归:
SQL> select
2 translate(
3 initcap('newyork is a BEAUTIFUL city')
4 , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'
5 , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6 )
7 from dual
8 /
TRANS
-----
NIABC
SQL>
如果句子包含数字,标点符号等,那么我们必须将这些字符添加到第一个替换字符串中,这可能会变得相当繁琐。
答案 1 :(得分:6)
答案 2 :(得分:2)
您可以使用描述here的分割函数(用空格替换逗号),以便用句子分隔句子。然后,您可以像AJ所说的那样使用substr函数,因为分割的结果将允许您从每个“片段”的char 1到char 2开始。
毕竟它涉及到substr,对吧?
PS。我宁愿在上面的层中处理结果,而不是在查询期间。但那就是我。
答案 3 :(得分:1)
可能涉及使用函数substr?