如何将Javascript字符串转换为SQL LongText

时间:2013-03-06 13:18:35

标签: javascript sql string longtext

我在SQL中使用LongText列时遇到一个小时左右的问题。 我目前正在开发一个Web项目,在某些时候我们有一个搜索表单,允许用户搜索许多字段。由于客户的用户被迫使用IE 9,我们必须创建一个javascript ...脚本,解析整个表单,只需要所需的内容,以免超过IE的2k字符限制。

到目前为止,脚本工作正常,直到我们添加了一个textarea字段,代表我们数据库中的LongText列。问题似乎来自SQL不会将SQL语句中的简单String作为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处理器,它将全部执行并执行查询。这部分工作正常,它只是LongText列,这让我很难过。

如果你们知道这个SQL Query应该成功解释什么,那么我会非常高兴!

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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大小,即使是最大尺寸,也有可能导致数据丢失。