0

データストアのフィールドの1つの長さでクエリをフィルタリングしたいのですが、WHERE句にlen関数を含めることができないようです。

q = db.GqlQuery("SELECT CommentCode FROM Comments " + 
                "WHERE RefObjType = 'paper' AND RefObjID = :1 AND len(CommentCode) = :2" +
                "ORDER BY CommentCode DESC ", RefObjID, 1)

これにより、次のようになります。BadQueryError: Parse Error: Invalid WHERE Condition at symbol (

誰かが私にこれを機能させる方法の例を教えてもらえますか?

len()フィルターを省略しただけでクエリ全体が機能するため、RefObjID部分が機能します。

ありがとう。

4

2 に答える 2

1

データストアがどのように機能するかによって、(少なくとも私が理解している限りでは)理解できません。文字列の長さは、のプロパティ(静的または動的を使用db.Expando)である必要がModelあり、それをフィルタリングします。

于 2012-08-05T12:54:07.710 に答える
0

考えられる解決策:
DESCの順序で結果を取得するようにクエリを変更し、クエリの取得後に必要な結果にアクセスして結果を処理します。

クエリの変更:

  q = db.GqlQuery("SELECT CommentCode FROM Comments " + 
                    "WHERE RefObjType = 'paper' AND RefObjID = :1" +
                    "ORDER BY CommentCode DESC ", RefObjID, 1)

length(CommentCode)==2この後、ループと条件付きステートメントを持つ行を選択します。

于 2012-08-05T13:01:17.323 に答える