MySQL REGEXP匹配正数

时间:2011-08-18 15:28:41

标签: mysql regex

我有一个包含此数据的列varchar [25]:

  • 886,-886
  • -886
  • 0,-1234
  • 1234
  • (空)
  • 0

数字的大小可能会从1位变为n位。 我需要能够拉出任何至少有一个正数的行

我在想像

这样的东西
REGEXP '[^-,][0-9]+'

但是当88与正则表达式匹配时,这会拉-886

5 个答案:

答案 0 :(得分:1)

你可能不需要正则表达式

COL not like '-%' AND COL not like '%,-%'

然而,这是存储到不正确的数据类型的坏例子,
拆分,并存储到多行......您可以节省一些时间来处理类似这个问题的内容

答案 1 :(得分:1)

尝试使用:

"[^-\d]\d+\b"

如果我理解你的问题,这应该有效。

一个好的正则表达式参考表:http://www.regular-expressions.info/reference.html

答案 2 :(得分:1)

我能够找到最佳解决方案:

`COL` NOT LIKE  '%-%'

我忘了提到该列可能还包含以下字词:

  • 所有,-886
  • 无,886
  • 0,1,2,3,无
  • 0
  • 等...

答案 3 :(得分:0)

尝试

REGEXP '[[:<:]][^-,][0-9]+[[:>:]]'

:<::>:部分表示字边界。

答案 4 :(得分:0)

^ \ B \ d + \ B $ 会给你正整数。

^ [^ - ] \ d +((([^ - ]?\ d +)))+ $ 将只给出所有值都是正整数的列表

对于任何正整数的列表(但所有有效整数为负或正)我认为这将检查: ^(( - \ d +,))+ [^ - ] \ d +((([^ - ] \ d +))|?(, - \ d +))+ $

这是正则表达式的绝佳网站: http://gskinner.com/RegExr/

我一直用它进行实时测试。

相关问题