首页 新闻 搜索 专区 学院

asp.net sql语句中where条件存在中文在程序中取不出数据,在数据库中可以正常取值,数据库为oracle

0
悬赏园豆:20 [已解决问题] 解决于 2013-01-25 11:43

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);

天空中一朵艳阳的主页 天空中一朵艳阳 | 初学一级 | 园豆:188
提问于:2013-01-22 20:10
< >
分享
最佳答案
0

可以用decode语句将(N'完成',N'受理',N'勘察')转化为相应的数字。

收获园豆:20
邀月 | 高人七级 |园豆:25375 | 2013-01-24 10:58
其他回答(5)
0

因为存储字符串的时候常常会产生空格。所以楼主的问题可能是空格的问题,可以改用like试试。(nvarchar可变长度应该不会产生空格???)

滴答的雨 | 园豆:3690 (老鸟四级) | 2013-01-22 23:29
0

不标注Unicode ,不加N呢?是什么结果?

 CFHANDLEDONE IN ('完成','受理','勘察') 

八戒的师傅 | 园豆:1472 (小虾三级) | 2013-01-23 08:39

数据库为oracle,在oracle查询分析器里加不加都能取

支持(0) 反对(0) 天空中一朵艳阳 | 园豆:188 (初学一级) | 2013-01-23 13:05
0

CFHANDLEDONE IN (N'完成',N'受理',N'勘察') in 写不出来,可以用or来替代啊

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-23 13:30
0

好长的sql

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-01-23 16:00
0

问题已解决,在配置文件的连接字符串中写Unicode=true,问题解决

天空中一朵艳阳 | 园豆:188 (初学一级) | 2013-01-25 11:43

此乃正解!

支持(0) 反对(0) yyutudou | 园豆:997 (小虾三级) | 2013-02-25 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册