如何在regexmysql中包含空格但排除除数字以外的任何字符?

5jdjgkvh  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(323)

我有一张这样的table

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

如果值包含空格或任何类型的分隔值(如(\r,\n,\t),我想搜索no1列,所以我使用了这个

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

现在我想排除至少1种单词,但我不知道如何在正则表达式匹配查询中组合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

我怎么能这么做?

ejk8hzay

ejk8hzay1#

您似乎希望由数字组成的行至少有一个空格。一个简单的方法是对不包含以下字符的任何行进行精处理:

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

或:

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

这是一把小提琴。

ovfsdjhp

ovfsdjhp2#

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

可能比戈登的版本快。
如果必须避免尾随空格,则可能需要这样做:

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

相关问题