<cfloop query="GET_ALL_STUDENTS>
<cfif #student_id# is NOT NULL>
<!--- do something--->
</cfif>
</cfloop>
上記は、null値を返すcfクエリをループする方法であり、student_idがnullかどうかを確認したいと思います。これは私が試したもので、失敗しました。誰かがもっと良い方法を教えてくれますか?
データベースのifNull()などを使用できます。ただし、ColdFusionでは、クエリは文字列として返されます。あなたの状況を考えると、最も簡単な方法は空でない文字列をチェックすることです:
<cfif len(student_id)>
ちなみに、評価の中にシャープ記号は必要ありません。変数をリテラルとして使用する場合のみ(出力時など)
Adobe ColdFusion 9では、次のことができます。
<cfif IsNull(student_id)>
</cfif>
またはあなたが反対をしているので:
<cfif NOT IsNull(student_id)>
</cfif>
クエリがすべての生徒を取得し、レコードをcfloopしてNULLであるStudent_idフィールドを検索しているようです。
Student_id IS NULL。を持つレコードを具体的に照会するクエリを記述する方が効率的です。
すべての学生のテーブルレコードを取得する方法は、100人程度の学生がいる場合に効果的です。それが本番環境に置かれ、25,000人の学生がいる場合はどうなりますか?
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