代码之家  ›  专栏  ›  技术社区  ›  Gagantous Faradox

如何在sql中包含空格但不包括数字以外的任何字符?

  •  0
  • Gagantous Faradox  · 技术社区  · 6 年前

    我有这样的桌子

    NO1                 | NO2
    3173 02241016 0008 | 3673 0619 0590 0001
    3173 0219 0312 1023 | 3671 1101 0380 0007
    3173022701090232    | 3173 0218 0583 0006
    3173 022601097060   | 3173 0214 0278 0010
    3173021201121012    | 3173 0259 0694 1002
    anywords any        | anywords any2
    anyword2any2        | anywordsany3
    anywords/ any-@       | anywords any2
    

    select * from table1 where NO1 REGEXP '[[:blank:]]' 
    

    结果是

        NO1                 | NO2
        3173 02241016 0008  | 3673 0619 0590 0001
        3173 0219 0312 1023 | 3671 1101 0380 0007
        3173 022601097060   | 3173 0214 0278 0010
        anywords any        | anywords any2
        anywords/ any-@       | anywords any2
    

    现在我想排除至少一种除了数字以外的单词,但是我不知道如何在regex匹配查询中组合include和exclude

        NO1                 | NO2
        3173 02241016 0008  | 3673 0619 0590 0001
        3173 0219 0312 1023 | 3671 1101 0380 0007
        3173 022601097060   | 3173 0214 0278 0010
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    您似乎希望包含至少一个空白的数字行。一个简单的方法是对不包含以下字符的行进行精细化:

    where NO1 NOT regexp '[^[:blank:]0-9]' AND NO1 REGEXP '[[:blank:]]'
    

    where  NO1 regexp '^[[:blank:]0-9]+[[:blank:]][[:blank:]0-9]*$' 
    

    Here 是一个db<>小提琴。

        2
  •  1
  •   Rick James diyism    6 年前
    where  NO1 regexp '^[0-9]+[[:blank:]][[:blank:]0-9]*$'
    

    如果必须避免尾随空格,则可能需要执行以下操作:

    where  NO1 regexp '^[0-9]+[[:blank:]][[:blank:]0-9]*[0-9]$'