1

LongTextSQL の列で1 時間ほど問題に直面しています。私は現在、ユーザーが多数のフィールドを検索できる検索フォームがある Web プロジェクトに取り組んでいます。お客様のユーザーが IE 9 の使用を余儀なくされたため、フォーム全体を解析し、IE の 2k 文字の制限を超えないように必要なものだけを取得する JavaScript... スクリプトを作成する必要がありました。

これまでのところ、DBtextareaの列を表すフィールドを追加するまで、スクリプトは正常に機能していました。LongTextこの問題は、SQL がStringSQL ステートメントの単純なテキストを LongText として受け取らないという事実に起因しているようです。

クエリは次のようになります。

SELECT * FROM SONORA.CF_CPR_CASE WHERE CASEFOLDERID != 2 
and CMF_VLM_APPLICATION like '%CPR%' and CPR_DESCRIPTION='rererere'
and CMF_TYPE_CASE_FK like '%LC_130125_074927_000001_60%' 

しかし、私はこのエラーが発生します:

EJBException:; nested exception is: javax.ejb.EJBException: The data types ntext
and varchar are incompatible in the equal to operator.S_EXCP(204); nested
exception is: javax.ejb.EJBException: The data types ntext and varchar
are incompatible in the equal to operator.S_EXCP(204)

Found in FmsQuery: SELECT * FROM {{DBTABLEPREFIX}}CF_CPR_CASE WHERE
CASEFOLDERID != 2 and CMF_VLM_APPLICATION like '%CPR%' and 
CPR_DESCRIPTION='ztztztztz' and CMF_TYPE_CASE_FK like 
'%LC_130125_074927_000001_60%'

あまり知られていませんが、まだあまり重要ではない CASE360 を使用しています。JavaScript を使用して SQL ステートメントの「where 句」を作成し、それを CASE360 プロセッサに送信します。CASE360 プロセッサはこれをすべて取得してクエリを実行します。この部分は問題なく動作します。苦労しているのは LongText 列だけです。

この SQL クエリが正常に解釈されるためには、どのように見えるべきかについて何か考えがあれば、私は無限に幸せです!

よろしくお願いいたします。

4

1 に答える 1

2

CASTである列で を使用してみることができますntext。上記のエラーからどの列になるかは明確ではありません。CPR_DESCRIPTION例として、それが列であると仮定しましょう:

SELECT *
FROM SONORA.CF_CPR_CASE
WHERE CASEFOLDERID != 2 
  and CMF_VLM_APPLICATION like '%CPR%'
  and CAST(CPR_DESCRIPTION as varchar(2000)) ='rererere'
  and CMF_TYPE_CASE_FK like '%LC_130125_074927_000001_60%'
;

キャストには適切な大きさのサイズを選択する必要がありvarchar、最大サイズでもデータが失われる可能性があることに注意してください。

于 2013-03-06T13:28:46.930 に答える