web-dev-qa-db-ja.com

単語間のスペースを削除し、 'REPLACE'、 'INSTR' OR 'SUBSTR' Oracle関数を使用して単一のアンダースコアに置き換える方法

単語間のスペースを1つのアンダースコアに置き換えたい。 replace_regex Oracle関数を使用してこれを行うことはできません。SQLステートメントの変換に使用しているコンバーターではサポートされていないため、SQLサーバーやPostgreSQLなどのプラットフォームに依存しません。

現在、コンバーターは「substr」、「replace」、および「instr」Oracle関数のサポートを提供しています。これらの3つの関数を使用して、出力を下回る方法を教えてください。例:

"my name is            xyz" =>  "my_name_is_xyz"
"test    sdf"               =>  "test_sdf"
1
user2274074

このようなことは、少なくともreplaceがすべてのプラットフォームでSQL Serverと同じように動作する場合に機能する可能性があります。

  1. すべてのスペースをスペース+アンダースコアに置き換えます
  2. 下線+スペースを空の文字列に置き換えます
  3. スペースを空の文字列に置き換えます

replace(replace(replace('my name is            xyz', ' ', '_ '), ' _', ''), ' ', '');
1
Mikael Eriksson