5

私はインタビューで尋ねられました.Oracle sqlからの質問.これは簡単な質問のように見えましたが、答える手がかりがありませんでした.誰か助けてくれますか?

コラムに「ニューヨークは美しい街​​です」のような文字列があれば。

select column_name from table_name;

結果になります

newyork is a beautiful city

すべての最初の文字を含む文字列として出力を与えるために必要なクエリは何ですか? つまり、出力は

niabc
4

4 に答える 4

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>

文に数字や句読点などが含まれている場合、これらの文字を最初の置換文字列に追加する必要があり、かなり面倒です。

于 2010-02-01T06:12:47.670 に答える
6

答えはREGEX_SUBSTRを使用しています。

こちらのドキュメントとこちらの詳細な例をご覧ください

于 2010-02-01T04:42:52.693 に答える
2

文をスペースで分割するために、ここで説明する分割関数(コンマをスペースで置き換える)を使用できます。次に、AJが言うように、substr関数を使用できます。これは、分割の結果により、すべての「ピース」の文字1から文字2までを開始できるためです。

結局のところ、それはsubstrを含みますよね??

PS。クエリ中ではなく、上のレイヤーで結果を処理したいと思います。しかし、それは私です。

于 2010-02-01T04:43:07.310 に答える
1

多分それは関数substrの使用を伴うでしょう?

于 2010-02-01T04:33:57.007 に答える