web-dev-qa-db-ja.com

ColdFusionクエリループの戻り値からnull値を確認する方法

<cfloop query="GET_ALL_STUDENTS>
 <cfif #student_id# is  NOT NULL>
 <!--- do something--->
 </cfif>
</cfloop>   

上記は、null値を返すcfクエリをループする方法であり、student_idがnullかどうかを確認したいと思います。これは私が試したもので、失敗しました。誰かがもっと良い方法を教えてくれますか?

17
Evlikosh Dawark

データベースのifNull()などを使用できます。ただし、ColdFusionでは、クエリは文字列として返されます。あなたの状況を考えると、最も簡単な方法は空でない文字列をチェックすることです:

<cfif len(student_id)>

ちなみに、評価の中にシャープ記号は必要ありません。変数をリテラルとして使用する場合のみ(出力時など)

30
Billy Cravens

Adobe ColdFusion 9では、次のことができます。

<cfif IsNull(student_id)>
</cfif>

またはあなたが反対をしているので:

<cfif NOT IsNull(student_id)>
</cfif>
13
NullyB

クエリがすべての生徒を取得し、レコードをcfloopしてNULLであるStudent_idフィールドを検索しているようです。

Student_id IS NULL。を持つレコードを具体的に照会するクエリを記述する方が効率的です。

すべての学生のテーブルレコードを取得する方法は、100人程度の学生がいる場合に効果的です。それが本番環境に置かれ、25,000人の学生がいる場合はどうなりますか?

3
Scott Jibben

Java CFQueryオブジェクトのクラス(coldfusion.sql.QueryTable)はnull値に対して空の文字列を返しますが、その親クラスであるcoldfusion.sql.TableはメソッドgetField(row、column)クエリテーブルの値に直接アクセスし、値がnullの場合は「undefined」を返します。IsNullを使用して「undefined」を識別できます。したがって、NULLを検出できます。

<CFLOOP query="GET_ALL_STUDENTS">
    Row = #CurrentRow#
    <CFIF IsNull(GET_ALL_STUDENTS.getField(GET_ALL_STUDENTS.CurrentRow, GET_ALL_STUDENTS.findColumn('student_id')))>
        [NULL]
    <CFELSE>
        #GET_ALL_STUDENTS.student_id#
    </CFIF>
    <br>
</CFLOOP>

リファレンス: http://laxmanthota.blogspot.com/2010/11/cfquery-and-underlying-Java-objects.html

0
Pak Chin Wong