1

LongText在 SQL 中的一列中面临一个小时左右的问题。我目前正在做一个网络项目,在某个时候我们有一个搜索表单,允许用户搜索多个字段。由于客户的用户被迫使用 IE 9,我们不得不创建一个 javascript... 脚本来解析整个表单,并且只获取所需的内容,以免超过 IE 的 2k 字符限制。

到目前为止一切顺利,脚本运行良好,直到我们添加了一个textarea代表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 处理器,该处理器将接受所有这些并执行查询。这部分工作正常,只是 LongText 列让我很难过。

如果你们知道这个 SQL 查询应该是什么样子才能被成功解释,那么我会非常高兴!

提前谢谢你的帮助。

4

1 回答 1

2

您可以尝试CAST在列上使用 a 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 回答