0

クエリ全体で余分なスペース (>1) を削除する別の方法を探しています。私は Excel スプレッドシートから Oracle クエリの情報を取得しているため、ユーザー エラーやその他の理由で余分なゼロが発生する可能性があるため、Excel から情報を取得すると、いくつかの値の後に 2 つ、場合によっては 3 つの余分なスペースが表示されます。そのため、アプリケーションを介してクエリを実行しても、Oracle から返されるレコードは取得されません。Trim(ds.Tables.Item(0).Rows.Item(k).Item(i).ToString.ToUpper) を試しましたが、一部の値の余分なスペースが削除されません。私が知らない SQL ステートメントがありますか、それとも Trim が機能しない別の理由がありますか?

編集:replace関数を間違って書いていました。

Original: string.Replace("  ", " ")
New: string = string.replace("  ", " ")
4

3 に答える 3

1

String.Replace(" ", String.Empty)代わりに 使用してください。Trim先頭と末尾のスペースのみを削除します。

于 2013-10-08T14:32:19.717 に答える
0

Oracle 側では、REGEXP_REPLACE関数を使用できますが、余分なスペースを削除する各列にそれを適用する必要があります。

SELECT
  REGEXP_REPLACE(myCol1, ' {2,}', ' ') AS myCleanCol1,
  REGEXP_REPLACE(myCol2, ' {2,}', ' ') AS myCleanCol2,
FROM myTable

この例では、2 つ以上のスペース (2 番目のパラメーター) の出現箇所をすべて検索し、1 つのスペース (3 番目のパラメーター) に置き換えます。

于 2013-10-08T14:32:52.920 に答える
0

REGEXP_REPLACE を使用できます

次のようなものかもしれません:

regexp_replace(your_column, '\s{2,}', '')

ここにsqlfiddleのデモがあります

于 2013-10-08T14:32:54.737 に答える