代码之家  ›  专栏  ›  技术社区  ›  JennyToy

SQL:类似于对chr(10)或chr(13)列的查询

  •  1
  • JennyToy  · 技术社区  · 7 年前

    我在做一件事

    select field1 
    from tablename 
    where field1 like '%xyz zrt bla bla trew%'
    

    field1 是clob列和 'xyz zrt bla bla trew' 可能有新行字符,如chr(10)或chr(13)。所以可能是这样 'xyz\r\n\rzrt bla bla\n\n trew'

    这些正在转换为一个(或多个)空间。所以单词之间的任何空格都可以是真空格或一个或多个新行字符。

    我在工作中如何考虑到这一点 LIKE ?

    3 回复  |  直到 7 年前
        1
  •  2
  •   mathguy    7 年前

    懒惰的解决方案(依赖于正则表达式,正则表达式可能会破坏性能,也可能不会影响性能)是这样的:

    select field1 
    from   tablename 
    where  regexp_like(field1, 'xyz\s+zrt\s+bla\s+bla\s+trew')
    
        2
  •  2
  •   Deian    7 年前

    不过,为了适当加快搜索过程,您可以将修剪结果存储在指定的列“field1\u trim”中。

    例如:将以下查询的结果保存到临时表中,然后对其运行查询

    select 
      regexp_replace('[[:space:]]+', chr(32)) 
      field1_trim,
      <some unique row id to map to original table>
     from table1;
    
        3
  •  1
  •   demircioglu    7 年前

    对于Oracle,您可以使用 INSTR(field1, chr(10)) > 0

    field1 LIKE '%' + CHAR(10) + '%' CHARINDEX(CHAR(10), field1) > 0