0

ブール値の列をブール値のリテラルと比較するにはどうすればよいですか?

ColdFusionクエリ オブ クエリ ユーザー ガイドは、ブール値リテラルの比較をサポートすると主張しています。

条件付きテスト

この条件は、ブール式が True、False、または Unknown であるかどうかをテストします。構文

cond_test ::= 式 [IS [NOT] {TRUE | 偽 | わからない} ]

ただし、ColdFusion 9.0.1 では、このコード

<cfscript>
  rs = QueryNew('a', 'Bit');
  QueryAddRow(rs);
  rs.a[1] = true;
</cfscript>
<cfquery name="rs2" dbtype="query">
  select * from rs where a IS TRUE;
</cfquery>

次のエラーが発生します

java.sql.SQLException: <br><b>Query Of Queries syntax error.</b><br>
Encountered "a IS TRUE.
Incorrect conditional expression, 
Expected one of [like|null|between|in|comparison] condition, 

    at coldfusion.sql.imq.jdbcStatement.parseSQL(jdbcStatement.java:566)
    at coldfusion.sql.imq.jdbcStatement.fetchResult(jdbcStatement.java:536)
    at coldfusion.sql.imq.jdbcStatement.execute(jdbcStatement.java:131)
    at coldfusion.sql.Executive.executeQuery(Executive.java:1374)
    at coldfusion.sql.SqlImpl.execute(SqlImpl.java:345)
    at coldfusion.tagext.sql.QueryTag.executeQuery(QueryTag.java:915)
    at coldfusion.tagext.sql.QueryTag.doEndTag(QueryTag.java:590)
    at cfqoq2ecfm1569474275.runPage(/Users/jared/git/pf/tafkan/test/temp/qoq.cfm:6)

い回避策を見つけましたが(表示されていません)、よりクリーンな方法があれば知りたいです。

4

1 に答える 1

4

ダンプrsすると が表示されるため、またはa = 1を使用する必要がありますWHERE a = 1WHERE a = <cfqueryparam value="true" cfsqltype="cf_sql_bit"/>

Railoでは、値は値ではtrueなくとして保存され1/0ますが、を使用するcfqueryparamと問題が解決されます。

于 2013-08-26T13:10:09.327 に答える