精华内容
下载资源
问答
  •  select t.* from qg_table t where instr(t.title,'桥')> 0 or instr(t.plain,'桥')> 0 ;
    
    select t.* from qg_table t where instr(t.title,'桥')> 0 or instr(t.plain,'桥')> 0 ;

    展开全文
  • oracle模糊查询效率提高 博客分类:  oracle 数据库 模糊查询 内存 技术札记   分2种思路考虑模糊查询的效率的提高。--注:专注处理百万级数据量,小量数据就算了 第一种:把数据存到业务内存中,通过查询...

    分2种思路考虑模糊查询的效率的提高。--注:专注处理百万级数据量,小量数据就算了

    第一种:把数据存到业务内存中,通过查询内存提高效率。(要求:硬件内存要高)

    1,如果想实现内存动态数据,可以监控表数据变化更新内存。

     

    第二种:提高oracle数据库的查询方式。

    1、使用两边加‘%’号的查询,oracle是不通过索引的,所以查询效率很低。

        例如:select count(*) from lui_user_base t where t.user_name like '%cs%';

    2、like '...%'和 like'%...'虽然走了索引,但是效率依然很低。

    3、有人说使用如下sql,他的效率提高了10倍,但是数据量小的时候

        select count(*) from lui_user_base where rowid in (
           select rowid from lui_user_base t where t.user_name like '%cs%'
        )

    我拿100w跳数据做了测试,效果一般,依然很慢,原因:

      select rowid from lui_user_base t where t.user_name like '%cs%'   这条sql执行很快,那是相当的快,

       但是放到select count(*) from lui_user_base where rowid in()里后,效率就会变的很慢了。

    4、select count(*) from lui_user_base t where instr(t.user_name,'cs')> 0

    这种查询效果很好,速度很快,推荐使用这种。因为我对oracle内部机制不是很懂,只是对结果做了一个说明。。。惭愧啊。。。。

     

    5、有人说了用全文索引,我看了,步骤挺麻烦,但是是个不错的方法,留着备用:

    http://sandish.itpub.net/post/4899/464369

    对cmng_custominfo 表中的address字段做全文检索:
    1,在oracle9201中需要创建一个分词的东西:

    BEGIN
    ctx_ddl.create_preference ('SMS_ADDRESS_LEXER', 'CHINESE_LEXER');
    --ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); 不用
    end;

    2,创建全文检索:

    CREATE INDEX INX_CUSTOMINFO_ADDR_DOCS ON cmng_custominfo(address) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER SMS_ADDRESS_LEXER');

    3,查询时候,使用:

    select * from cmng_custominfo where contains (address, '金色新城')>1;

    4,需要定期进行同步和优化:
    同步:根据新增记录的文本内容更新全文搜索的索引。

    begin
    ctx_ddl.sync_index('INX_CUSTOMINFO_ADDR_DOCS');
    end;

    优化:根据被删除记录清除全文搜索索引中的垃圾

    begin
    ctx_ddl.optimize_index('INX_CUSTOMINFO_ADDR_DOCS', 'FAST');
    end;

    5,采用job做步骤4中的工作:

    1)该功能需要利用oracle的JOB功能来完成
    因为oracle9I默认不启用JOB功能,所以首先需要增加ORACLE数据库实例的JOB配置参数:
    job_queue_processes=5
    重新启动oracle数据库服务和listener服务。

    2)同步 和 优化
    --同步 sync:
    variable jobno number;
    BEGIN
    DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''INX_CUSTOMINFO_ADDR_DOCS'');', SYSDATE, 'SYSDATE + (1/24/4)');
     commit;
    END;

    --优化
    variable jobno number;
    begin
     DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''INX_CUSTOMINFO_ADDR_DOCS'',''FULL'');', SYSDATE, 'SYSDATE + 1');
     commit;
    END;

    其中, 第一个job的SYSDATE + (1/24/4)是指每隔15分钟同步一次,第二个job的SYSDATE + 1是每隔1天做一次全优化。具体的时间间隔,可以根据应用的需要而定

    6,索引重建
    重建索引会删除原来的索引,重新生成索引,需要较长的时间。
    重建索引语法如下:
    ALTER INDEX INX_CUSTOMINFO_ADDR_DOCS REBUILD;

    据网上一些用家的体会,oracle重建索引的速度也是比较快的,有一用家这样描述:

    Oracle 的全文检索建立和维护索引要比ms sql server都要快得多,笔者的65万记录的一个表建立索引只需要20分钟,同步一次只需要1分钟。
    因此,也可以考虑用job的办法定期重建索引。

     

    参考资料:
    1,http://blog.csdn.net/yurenjia/archive/2007/04/08/1556306.aspx
    2,http://topic.csdn.net/u/20080117/23/34004f4a-4989-47ef-8764-0b7e3bf737a7.html
    3,http://tenwe.com/tech/database/oracle/200702/content_561_4.shtml
    4,http://www.knowsky.com/389357.html
    5,http://yangtingkun.itpub.net/post/468/195520
    6,http://bbs.zdnet.com.cn/archiver/tid-120474.html
    7,http://bbs.51cto.com/archiver/tid-26270.html
    8,http://oracle.chinaitlab.com/exploiture/720104_3.html
    9,http://www.33kuai.cn/html/shujuku/20080126/5314_2.html
    10,http://www.xrss.cn/Dev/DataBase/20084218963.Html

    展开全文
  • Oracle SQL模糊查询

    2013-08-12 18:11:11
    Oracle SQL模糊查询的语法为 SQL模糊查询的语法为 [code="java"]“SELECT column FROM table WHERE column LIKE 'pattern';”。 [/code] SQL提供了四种匹配模式: 1. % 表示任意0个或多个...
    Oracle SQL模糊查询的语法为
    

    SQL模糊查询的语法为
    “SELECT column FROM table WHERE column LIKE 'pattern';”。 


    SQL提供了四种匹配模式:
    1. % 表示任意0个或多个字符。如下语句:
          SELECT * FROM user WHERE name LIKE '%三%';

    将会把name为“张三”,“三脚猫”,“唐三藏”等等有“三”的全找出来;

    2. _ 表示任意单个字符。语句:
          SELECT * FROM user WHERE name LIKE '_三_';

    只找出“唐三藏”这样name为三个字且中间一个字是“三”的;
    SELECT * FROM user WHERE name LIKE '三__';

    只找出“三脚猫”这样name为三个字且第一个字是“三”的;

    3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:
     SELECT * FROM user WHERE name LIKE '[张李王]三';

    将找出“张三”、“李三”、“王三”(而不是“张李王三”);

    如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
    SELECT * FROM user WHERE name LIKE '老[1-9]';
    将找出“老1”、“老2”、……、“老9”;
    如要找“-”字符请将其放在首位:'张三[-1-9]';

    4. [^ ] 表示不在括号所列之内的单个字符。语句:
    SELECT * FROM user WHERE name LIKE '[^张李王]三';

    将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
     SELECT * FROM user WHERE name LIKE '老[^1-4]';

    将排除“老1”到“老4”寻找“老5”、“老6”、……、“老9”。

    !最后是重点!
    由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”、“';”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

        function sqlencode(str)
    str=replace(str,"';","';';")
    str=replace(str,"[","[[]") ';此句一定要在最先
    str=replace(str,"_","[_]")
    str=replace(str,"%","[%]")
    sqlencode=str
    end function


    在查询前将待查字符串先经该函数处理即可。
    展开全文
  • Oracle模糊查询的实现 2010-10-29 16:41 佚名 互联网 我要评论(2) 字号:T | T 模糊查询对于每一个数据库来说,都是比较难实现的,下文对Oracle数据库模糊查询的实现方法作了详细的描述,供您参考。 AD:...

    Oracle模糊查询的实现

    2010-10-29 16:41 佚名 互联网   我要评论(2)  字号: T  |   T
    一键收藏,随时查看,分享好友!

    模糊查询对于每一个数据库来说,都是比较难实现的,下文对Oracle数据库模糊查询的实现方法作了详细的描述,供您参考。

    AD:2013云计算架构师峰会精彩课程曝光

    Oracle模糊查询应该如何实现呢?下面就教您一个实现Oracle模糊查询的方法,如果您在Oracle模糊查询方面遇到问题,不妨一看。

    在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:
    %   零或者多个字符
    _    单一任何字符(下划线)
    \     特殊字符
    []     在某一范围内的字符,如[0-9]或者[aeth]
    [^]    不在某范围内的字符,如[^0-9]或者[^aeth]

    其中关于条件,SQL提供了四种匹配模式:

    1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

    比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

    将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

    另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
    SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

    若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%' 
    虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

    2,_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

    比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
    只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

    再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
    只找出“三脚猫”这样name为三个字且第一个字是“三”的;

    3,[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

    比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
    将找出“张三”、“李三”、“王三”(而不是“张李王三”);

    如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
    SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
    将找出“老1”、“老2”、……、“老9”;

    4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

    比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
    将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

    SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
    将排除“老1”到“老4”,寻找“老5”、“老6”、……

    5,查询内容包含通配符时

    由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

       
    1. function sqlencode(str)  
    2. str=replace(str,"[","[[]") '此句一定要在最前  
    3. str=replace(str,"_","[_]")  
    4. str=replace(str,"%","[%]")  
    5. sqlencode=str 
    6. end function 

    在查询前将待查字符串先经该函数处理即可。

    【编辑推荐】

    Oracle存储过程的调试方法

    带您了解Oracle物理结构

    Oracle自动归档模式的设置

    ORACLE归档日志删除方法

    Oracle移动数据文件的方法

    【责任编辑: 段燃  TEL:(010)68476606】

    展开全文
  • 教您如何实现Oracle模糊查询 2010-11-18 16:27 佚名 互联网 我要评论(0) 字号:T | T 查询是数据库的核心功能,而模糊查询是最大的难点,下文对Oracle模糊查询的实现方法作了详尽的阐述,供您参考学习之用...
  • Oracle模糊查询

    千次阅读 2016-01-21 15:49:06
    Oracle模糊查询
  • mybatis sql使用及Oracle模糊查询

    千次阅读 2018-11-15 11:43:05
    sql在数据库能查到但是,执行时就是什么都没有,网上查了下,解决办法,可能可数据库数据类型有关,如果是char(10)长度为10的话,可能不足10个都用空格补位了,所以这个时候要加trim()函数去空格,因为 但我加上并没有什么...
  • 主要介绍了oracle sql语言模糊查询--通配符like的使用教程详解,非常不错,具有参考借鉴价值,需要的朋友参考下吧
  • oracle模糊查询

    千次阅读 2017-08-03 16:24:26
    oracle在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符: % 零或者多个字符 _ 单一任何字符(下划线) \ 特殊字符  ...
  • ORACLE中Like与Instr模糊查询性能大比拼 ORACLE中Like与Instr模糊查询性能大比拼     instr(title,'手册')>0 相当于 title like '%手册%'   instr(title,'手册')=1 相当于 title like '手册%'   instr...
  • 在学习mybatis的学习中,用到模糊查询的时候,发现直接拼接成‘%’#{description}'%'会报错,然后整理了三种模糊查询SQL语句写法: 1.在传参的时候,就把参数拼接为"%"+#{description}+"%" 然后传到XML文件的SQL...
  • 这个只是一个知识点作为记录,如果存在转义符就使用oracle的escape字段,此字段是用来定义转义符的 例如:select * from tb_vlan tv where tv.name like '%3/%%' escape '/'这样查询出来的结果可以是13%2
  • 使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式: 1.select * from tb where name like '%XX%'; 2.select * from tb where ...
  • Oracle SQL忽略大小写模糊查询

    千次阅读 2017-04-16 19:28:58
    Oracle SQL忽略大小写模糊查询
  • Oracle 模糊查询like %%

    万次阅读 2017-11-03 12:52:52
    一、我们可以在where子句中使用like关键字来达到Oracle模糊查询的效果;在Where子句中,可以对datetime、char、varchar字段类型的列用Like关键字配合通配符来实现模糊查询,以下是可使用的通配符: (1)% :零或者...
  • Oracle 模糊查询

    千次阅读 2019-01-12 16:48:47
    在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:% 零或者多个字符_ 单一任何字符(下划线)\ ...其中关于条件,SQL提供了...
  • MySQL、oracleSQL Server模糊查询 作者:张国军_Suger 开发工具与关键技术:MySQL、oracleSQL Server       很多时候我们...
  • oracle 模糊查询

    2011-05-16 09:02:16
    [code="sql"] select * from s_user t where t.user_name like '%z%' ...查询、删除某个字段是空空的 [code="sql"] select * from s_user t where t.user_pwd is null [/code]
  • oracle sql语言模糊查询

    2011-06-29 21:22:00
    在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可...如[0-9]或者[aeth][^] 不在某范围内的字符,如[^0-9]或者[^aeth] 其中关于条件,SQL提供
  • Mybatis-Oracle模糊查询

    2019-08-16 11:04:40
    Mybatis-Oracle模糊查询 <if test="@Ognl@isNotEmpty(Name)"> AND A.NAME_ like '%'||#{Name}||'%' </if> 1.Oracle使用 '%'||#{Name}||'%' 2.#{...}取值后自动加上双引号,${...}直接取值 3.#{...}...
  • oracle模糊查询中的regexp_like嵌套子查询用法 regexp_like一般用于模糊查询某一列时包含多个查询条件 需求1:在用户表中查询出账号包含650000和230000的用户。 select * from sys_user where regexp_like(account,'...
  • Oracle SQL模糊查询的语法为

    千次阅读 2009-10-21 16:47:00
    SQL模糊查询的语法为 “SELECT column FROM table WHERE column LIKE pattern;”。 SQL提供了四种匹配模式: 1. % 表示任意0个或多个字符。如下语句: SELECT * FROM user WHERE name LIKE %三%; 将会把name为...
  • mybatis中oracle模糊查询的方法

    千次阅读 2019-03-12 23:08:07
    在开发过程中一直用的是mysql数据库使用oracle数据库做模糊查询结果报错了提示我concat标识符错误下面是我自己的解决方法 &amp;amp;amp;amp;lt;select id=&amp;amp;amp;quot;selectlist&amp;amp;amp;...
  • Oracle模糊查询的实现

    千次阅读 2013-04-06 21:59:36
    Oracle模糊查询应该如何实现呢?下面就教您一个实现Oracle模糊查询的方法,如果您在Oracle模糊查询方面遇到问题,不妨一看。 在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取...
  • oracle中可以使用start with connect by 查询树形集合, 用来查询层级关系很是好用 --当模糊查询出来的结果父级重复时可以去重即可 --查询父级(包含自己) SELECT DISTINCT ID,PID,NAME FROM TABLE_NAME A START ...
  • oracle中,模糊查询使用like和 not like 。 item表中,log字段为备注,备注中存在“抽检”两个字的时候,不统计该项目。备注可以为null。 select * from item where log not like "%抽检%"; 期望的情况是:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,255
精华内容 11,302
关键字:

oracle模糊查询sql