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

使用Regex排除任何没有字母的值

  •  0
  • nak5120  · 技术社区  · 5 年前

    Col_A
        1
      1,2
     the1
    TH,E2
     THEN
     1_Th
       11
    

    我想要的结果是:

    Col_A
     the1
    TH,E2
     THEN
     1_Th
    

    我试过了,但没有成功:

    with new as (
    select distinct COL_A test from TABLE_1)
    
    select test from new
    where test regexp '[a-zA-Z]'
    

    数据类型=VARCHAR(16777216)

    1 回复  |  直到 5 年前
        1
  •  1
  •   Simeon Pilgrim    5 年前

    在雪花上,这是有效的:

    SELECT column1 
    FROM VALUES ('Col_A'), ('1'), ( '1,2'), ( 'the1'), 
         ( 'TH,E2'), ( 'THEN'), ( '1_Th'), ( '11')
    WHERE column1 RLIKE '.*[a-zA-Z].*';
    

    给予:

    COLUMN1
    Col_A
    the1
    TH,E2
    THEN
    1_Th
    

    并给出 REGEXP 是的别名 RLIKE 这同样有效

    SELECT column1 
    FROM VALUES ('Col_A'), ('1'), ( '1,2'), ( 'the1'), 
         ( 'TH,E2'), ( 'THEN'), ( '1_Th'), ( '11')
    WHERE column1 REGEXP '.*[a-zA-Z].*';
    

    如果这些行为像 LIKE

    WHERE column1 REGEXP '.*[:alpha:]*';
    

        2
  •  0
  •   Greg Pavlik    5 年前

    测试和工作:

    select * from TABLE_1 where REGEXP_INSTR(COL_A, '[A-Z]', 1, 1, 0, 'i') > 0
    

        3
  •  0
  •   Gordon Linoff    5 年前

    有一种方法:

    where col regexp '.*[a-zA-Z].*'
    

    用于的语法 like