次の方法で共有


Visual FoxProでヌル値を使用する

Visual FoxPro のコマンドと関数でヌルデータ値を使用する方法を説明します。

元の製品バージョン: Visual FoxPro
元の KB 番号: 130307

概要

Visual FoxPro バージョン 3.0 では、null データ値がサポートされています。 FoxProのバージョン3.0以前のバージョンは、nullデータ値を直接サポートしていませんでした。 この記事では、Visual FoxPro が null 値(.NULL.で表される)を Visual FoxPro のコマンドや関数に渡す際に従う一般的なルールについて説明します。

詳細情報

値が欠落している場合、関係がない場合、または不明な場合は、null 値 (.NULL.) を使用してください。 FoxProの以前のバージョンでは、未知の値や欠損値はスペースやゼロで表されており、誤解される可能性がありました。 Visual FoxPro では、フィールドに null 値を格納できるようになりました。

Visual FoxPro における null 値 (.NULL.) は、空の値、スペース、ゼロ値と同じでないことに注意が必要です。 Null は値が存在しないことを表すので、null は別の値 、null または null 以外の値と等しくない、より大きい、またはより小さいことはありません。 Visual FoxPro におけるヌル値のサポートは ANSI 標準に準拠しており、値や式が使用される製品のあらゆる領域に影響を与えます。

ヌル値の一般規則

Visual FoxPro のコマンドまたは関数に渡されたヌル値に関する一般的なルールは次のとおりです。

  • コマンドにヌルが渡されるとエラーが発生します。

  • 値として null を受け入れる関数は、結果として .NULL. を返します。

  • 数値を期待する関数にヌルが渡されると、エラーが発生します。

  • ISBLANK()ISDIGIT()ISLOWER()ISUPPER()ISALPHA()、およびEMPTY()は、それぞれヌル値が渡されるとfalse(.F.)を返します。

  • ISNULL() は、null値が渡されたときにtrue (.T.) を返します。

  • コマンド INSERT SQL と SELECT SQL は、IS NULL および IS NOT NULL 句を通して null 値を処理します。

  • MAX()MIN()SUM()などの SQL 集計関数は、集計内のすべての null 値を無視します。

  • Visual FoxProの集計関数は、与えられた値がすべてヌル値の場合、.NULL.を伝播しますが、そうでない場合はどんなヌル値も無視されます。

この記事の残りでは、これらの一般的な規則についてさらに詳しい情報と例を紹介します。

コマンドがヌルを渡すとエラーが発生します。

Visual FoxPro コマンドは、アクションを実行するステートメントです。 コマンドの例としては、 USEBROWSEDELETEがあります。 例えば、USE コマンドはこのコードに対してエラーを返します。

STORE .NULL. TO nWorkArea
USE mytable IN (nWorkArea)

USE コマンドのIN句は数値またはアルファ値を期待しています。.NULL. が渡されると、エラー テーブル番号が無効です が生成されます。

NVL() 関数は、計算や処理において、サポートされていない、または関係のないヌル値を削除するために使用される場合があります。

STORE .NULL. TO nWorkArea
USE mytable IN NVL(nWorkArea,0)

これにより、使用可能な最初の作業領域で mytable が開きます。 詳しくは、ヘルプファイルまたはVisual FoxProのドキュメントをご参照ください。

ヌル値を受け入れる関数は.NULL.を返します。 その結果

Visual FoxProの関数は、特定の作業を行い、ゼロまたはそれ以上の引数を受け取るルーチンです。 関数の例にはISBLANK()UPPER()SUBSTR()などがあります。 多くのVisual FoxPro関数では、ヌル値を引数として渡してもエラーが発生しませんが、関数から.NULL.が返されます。 言い換えれば、関数に null 値を渡すと、結果は常に null になります。 数学の方程式では、このようにヌル値も扱われます。 たとえば、500にnull値を加えるとnullになり、null値を0で掛けるとnullになります(0ではありません)。

以下のサンプルコードは.NULL.を返します。

cLastName = "Johnson"
nBegin = 5
nExtract = .NULL.
?SUBSTR(cLastName,nBegin,nExtract)

この規則の例外は、 ISBLANK()ISDIGIT()ISLOWER()ISUPPER()ISALPHA()EMPTY() の各関数であり、それぞれが .F. 値を返します。 ISNULL() 関数は.T.値を返します。

新しい句を使用して NULL 値を処理する INSERT SQL および SELECT SQL

2つの新しい句(IS NULL および IS NOT NULL)は、INSERT および SELECT SQL コマンド内のヌルを処理します。 たとえば、cLastNameがnullではないテーブル内のすべてのレコードを検索するには、このコマンドを使用します。

SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL

NULL 値を見つけるには、IS NULL 句を使用します。

SQL 集約関数はヌル値を無視します。

集約関数とは、一群の値(集約)に対して加算、最小値、最大値、平均といった数値演算を行う関数のことです。 集約関数の例にはMAX()MIN()、そしてSUM()があります。

例えば、SELECT SQLコマンドはテーブルから数値を取得するために集計関数を使用することができます。 例えば、以下のSELECTコマンドはnYTDSalesという名前のフィールドから最大値を返します。

SELECT MAX(nYTDSales) from mytable

フィールドに.NULL.値を含む任意のSQL集計関数は.NULL.値を無視し、結果として検討される集計に含まれない(存在しないかのように扱われる)null値を返します。

詳細については、Visual FoxPro のヘルプファイルで、.NULL. 値や上記の機能に関連するトピックを検索してください。