0

長さ121文字の列の行の値としてスペースしかありません。

列文字列がスペースのみであるかどうかを確認するクエリを oracle で作成したいと考えています。

たとえば、列アドレスの場合。行にはスペースのみが含まれます (121 文字すべてがスペースです)。

行にスペースのみが含まれているかどうかを確認するクエリが必要です。

select * from table where address <> ' ';

しかし、これは機能せず、1 つのスペースのみをチェックします。クエリで 121 個のスペースすべてをチェックしたい。

4

3 に答える 3

1

列で TRIM を実行するだけです。DBMS によっては、Null 文字列はNULL'' または空の文字列として扱われます。しかし、空の文字列が として扱われる Oracle の場合NULL、次のことができるはずです。

select * from table where LTRIM(RTRIM(address)) IS NOT NULL

TRIM はスペース文字だけでなく、すべての空白を削除することに注意してください。

于 2013-08-23T12:41:11.197 に答える
1

学習課題として 121 個のスペースをチェックしている場合は問題ありませんが、運用アプリケーションの列に 121 個のスペースを格納している場合は、設計が不適切である可能性があります。

列タイプが である場合は、おそらく(またはOracle で)CHAR変更する必要があります。すでに/になっている場合は、空の文字列を空の文字列として保存する必要があります。VARCHARVARCHAR2VARCHARVARCHAR2

値を 121 スペースにパディングする必要がある場合は、クエリを実行するときに注意してください。

  • オラクル:SELECT RPAD(NVL(address, ' '), 121) FROM myTable
  • MySQL:SELECT RPAD(address, 121, ' ') FROM myTable

値が空かどうかを調べたい場合は、Oracle が空の文字列を として扱うことに注意してくださいNULL。MySQL はこれを空の文字列として扱います。

  • オラクル:SELECT * FROM myTable WHERE address IS NULL
  • MySQL:SELECT * FROM myTable WHERE address = ''
于 2013-08-23T13:31:49.337 に答える
0

関数を使用REPLACE()し、その結果をnullと比較します

SELECT * FROM table WHERE REPLACE(address,' ') IS NULL;

フィドル

于 2013-08-23T12:42:10.890 に答える