sql 语句如下:
string sql = string.Format(@"SELECT FHANDLEDATE,FNAME_L2,CFHANDLEDONE,FHANDLEPERSON FROM CT_QUE_PROBLEMVIEW INNER JOIN CT_QUE_PROBLEMVIEWENTRY ON CT_QUE_PROBLEMVIEW.FID = CT_QUE_PROBLEMVIEWENTRY.FPARENTID INNER JOIN CT_QUE_PROBLEMVIEWENTRYS2 ON CT_QUE_PROBLEMVIEW.FID=CT_QUE_PROBLEMVIEWENTRYS2.FPARENTID
INNER JOIN T_ORG_SALE ON CT_QUE_PROBLEMVIEW.FDEPARTMENTID = T_ORG_SALE.FID WHERE CFHANDLEDONE IN (N'完成',N'受理',N'勘察') AND CT_QUE_PROBLEMVIEW.FNUMBER='{0}' ORDER BY FHANDLEDATE ", number);
下面的这句where条件存在中文,所以在asp.net中取不出数据,我把CFHANDLEDONE IN (N'完成',N'受理',N'勘察')去掉可以取出数据,但不符合客户要求,数据库为oracle,并且方法oracle查询窗口可以正常取数据,所以语句不存在问题。
----------------------------------------------------------------------------------------------
WHERE CFHANDLEDONE IN (N'完成',N'受理',N'勘察') AND CT_QUE_PROBLEMVIEW.FNUMBER='{0}' ORDER BY FHANDLEDATE ", number);
可以用decode语句将(N'完成',N'受理',N'勘察')转化为相应的数字。
因为存储字符串的时候常常会产生空格。所以楼主的问题可能是空格的问题,可以改用like试试。(nvarchar可变长度应该不会产生空格???)
不标注Unicode ,不加N呢?是什么结果?
CFHANDLEDONE IN ('完成','受理','勘察')
数据库为oracle,在oracle查询分析器里加不加都能取
CFHANDLEDONE IN (N'完成',N'受理',N'勘察') in 写不出来,可以用or来替代啊
好长的sql
问题已解决,在配置文件的连接字符串中写Unicode=true,问题解决
此乃正解!