2013-03-06 15 views
1

我在SQL中使用LongText列時遇到了一個小時左右的問題。 我目前正在開發一個Web項目,在這個項目中,我們有一個搜索表單,允許用戶搜索大量字段。由於客戶的用戶被迫使用IE 9,我們不得不創建一個javascript ...腳本,它解析整個表單,並且只爲了不超過IE限制的2k字符而需要的。如何將一個Javascript字符串轉換爲SQL LongText

到目前爲止,腳本工作正常,直到我們在我們的數據庫中添加了textarea字段代表LongText列。這個問題似乎來自於SQL不會將簡單的String作爲LongText在SQL語句中。

下面是該查詢的樣子:

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查詢應該看起來像被成功解釋,那麼我會無限開心!

非常感謝您的幫助。

+0

在JavaScript代碼中,客戶端上有SQL語句嗎? – Yuck 2013-03-06 13:22:46

+0

嗯,不,我們正在構建SQL Where子句的客戶端,然後用一些魔術技巧把它交給服務器,然後執行它並給出結果。但這不是重點 – 2013-03-06 13:23:54

+1

你說得對,它不是重點,但它仍然非常可怕。 – Yuck 2013-03-06 13:25:42

回答

2

您可以嘗試在ntext的列上使用CAST。我不清楚上面的錯誤是哪一列。舉個例子,我們假設它的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大小中投,而且即使與最大容量有數據丟失的可能性。

+0

我會嘗試的,你說得對,對不起,它是長文本的CPR_DESCRIPTION。 – 2013-03-06 13:31:43

+0

這工作得很好!先生非常感謝您! – 2013-03-06 13:39:46