我在一次采访中被问到,一个来自 oracle sql 的问题。这似乎是一个简单的问题,但我不知道如何回答。有人可以帮忙吗?
如果列中有“纽约是一座美丽的城市”之类的字符串。
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 函数,因为拆分的结果将允许您从每个“片段”的 char 1 到 char 2 开始。
毕竟它涉及到 substr,对吧?
PS。我宁愿在上面的一层中处理结果,而不是在查询期间。但这就是我。
也许它会涉及使用函数substr?