请教个关于模糊查询的问题

敌敌畏耶 2014-07-21 09:10:13
问题是这样的,一般的模糊查询直接可以用 like 去。
但是,现在我遇到了这样的一个问题:
数据库里的表(T)有个字段(state)类型是 number的。
比如:1:已经处理,2:尚未处理,3:忽略处理,4:错误的处理方法。
在客户端的展示就是 展示的后面的字符串而不是 1 2 3 。。。
现在,客户端有个模糊查询,如果输入的有“忽略”二字的,那么就需要把state为3的查询出来。
大神··给个意见1·咋个搞?

存储过程?本人对oracle就是个菜鸟。

麻烦大神讲解下··咋个实现···
...全文
294 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kally_Wang 2014-07-25
  • 打赏
  • 举报
回复
前面写错了 不是 to_char(sysdate,'Month dd yyyy hh:miAM','NLS_DATE_LANGUAGE = American')||'_BWB_Manifest' as fld_TO_filename, 是这个 replace(to_char(wmsys.wm_concat(distinct to_char(ws.userdefined5))),',',',')as fld_edi_description,
Kally_Wang 2014-07-25
  • 打赏
  • 举报
回复
引用 4 楼 kuaileyangle 的回复:
[/code]
这个flex.messaging.MessageException: java.lang.RuntimeException : java.sql.SQLException: ORA-22922: 不存在的 LOB 值 这个问题知道该如何解决吗? 是SQL里面的: replace(to_char(wmsys.wm_concat(distinct to_char(ws.userdefined5))),',',',')as fld_edi_description, 这个字段引起的。 在自定义报表中不显示这个字段不查询就没有任何问题,要是显示出来就会报这个错误。 我查询2014.7月 - 2014.7月 以后的日期没有问题。 查询2014.6月 到2014.7月 就会报这个错误。
Kally_Wang 2014-07-25
  • 打赏
  • 举报
回复
引用 5 楼 zlloct 的回复:
[quote=引用 楼主 yuekunge 的回复:]
问题是这样的,一般的模糊查询直接可以用 like 去。
但是,现在我遇到了这样的一个问题:
数据库里的表(T)有个字段(state)类型是 number的。
比如:1:已经处理,2:尚未处理,3:忽略处理,4:错误的处理方法。
在客户端的展示就是 展示的后面的字符串而不是 1 2 3 。。。
现在,客户端有个模糊查询,如果输入的有“忽略”二字的,那么就需要把state为3的查询出来。
大神··给个意见1·咋个搞?

存储过程?本人对oracle就是个菜鸟。

麻烦大神讲解下··咋个实现···


select * from test where decode(state,1,'deal',2,'not deal',3,'ignore',4,'error','others')='not deal';[/quote]

这个flex.messaging.MessageException: java.lang.RuntimeException : java.sql.SQLException: ORA-22922: 不存在的 LOB 值

这个问题知道该如何解决吗?
是SQL里面的:
to_char(sysdate,'Month dd yyyy hh:miAM','NLS_DATE_LANGUAGE = American')||'_BWB_Manifest' as fld_TO_filename,
这个字段引起的。 在自定义报表中不显示这个字段不查询就没有任何问题,要是显示出来就会报这个错误。
我查询2014.7月 - 2014.7月 以后的日期没有问题。 查询2014.6月 到2014.7月 就会报这个错误。

我也在数据库中看了 fld_TO_filename 这个拼起来的字段的所有数据的长度 都在100以下 。
蓝色小棉袄 2014-07-22
  • 打赏
  • 举报
回复
顶1楼的说法,还是应该建立一个像字典表一样的东西。如果只是用sql或者pl/sql来解决的话,不是最好的方法。
CT_LXL 2014-07-21
  • 打赏
  • 举报
回复
引用 楼主 yuekunge 的回复:
问题是这样的,一般的模糊查询直接可以用 like 去。 但是,现在我遇到了这样的一个问题: 数据库里的表(T)有个字段(state)类型是 number的。 比如:1:已经处理,2:尚未处理,3:忽略处理,4:错误的处理方法。 在客户端的展示就是 展示的后面的字符串而不是 1 2 3 。。。 现在,客户端有个模糊查询,如果输入的有“忽略”二字的,那么就需要把state为3的查询出来。 大神··给个意见1·咋个搞? 存储过程?本人对oracle就是个菜鸟。 麻烦大神讲解下··咋个实现···
select * from test where decode(state,1,'deal',2,'not deal',3,'ignore',4,'error','others')='not deal';
现在 2014-07-21
  • 打赏
  • 举报
回复

WITH TMP AS
 (SELECT 1 FLG
    FROM DUAL
  UNION ALL
  SELECT 2 FLG
    FROM DUAL
  UNION ALL
  SELECT 3 FLG
    FROM DUAL
  UNION ALL
  SELECT 4 FLG
    FROM DUAL)
SELECT *
  FROM (SELECT FLG,
               DECODE(FLG,
                      1,
                      '已经处理',
                      2,
                      '尚未处理',
                      3,
                      '忽略处理',
                      4,
                      '错误的处理方法') PVALUE
          FROM TMP) T
 WHERE T.PVALUE LIKE '忽略%';

简易人 2014-07-21
  • 打赏
  • 举报
回复
WITH TMP AS
 (SELECT 1 FLG, '已经处理' PVALUE
    FROM DUAL
  UNION ALL
  SELECT 2 FLG, '尚未处理' PVALUE
    FROM DUAL
  UNION ALL
  SELECT 3 FLG, '忽略处理' PVALUE
    FROM DUAL
  UNION ALL
  SELECT 4 FLG, '错误的处理方法' PVALUE
    FROM DUAL)
SELECT * FROM TMP T WHERE T.PVALUE LIKE '%忽略%'
简易人 2014-07-21
  • 打赏
  • 举报
回复
WITH TMP AS (SELECT 1 FLG, '已经处理' PVALUE FROM DUAL UNION ALL SELECT 2 FLG, '尚未处理' PVALUE FROM DUAL UNION ALL SELECT 3 FLG, '忽略处理' PVALUE FROM DUAL UNION ALL SELECT 4 FLG, '错误的处理方法' PVALUE FROM DUAL) SELECT * FROM TMP T WHERE T.PVALUE LIKE '%忽略%'
shiyiwan 2014-07-21
  • 打赏
  • 举报
回复
应当建立一张基础数据表look_up,将 1:已经处理,2:尚未处理,3:忽略处理,4:错误的处理方法 的映射关系存放其中。这张表也可以存储其他基础数据,新增一列做区分。 key value description 1 'processed' 'T' 2 'in processing' 'T' ... 类似以上,然后将该表与你的事物数据表做关联查询。
ghx287524027 2014-07-21
  • 打赏
  • 举报
回复
如果问题规模不扩大,那么无论是基于建表的查询还是用视图,其效率都没有decode的效率高!如果需要具体实现方式,请您把需求描述的详细一点
小伙要自信 2014-07-21
  • 打赏
  • 举报
回复
难道没有视图吗,关于state的,可以关联视图,进行模糊查询啊
liao_z_j 2014-07-21
  • 打赏
  • 举报
回复
decode

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧