2011-09-16 283 views
0

我遇到了正则表达式的问题。我在查询中使用正则表达式,如下所示。正则表达式问题

SELECT * 
FROM ad 
WHERE platform_specific_selection 
REGEXP '[\|]{0,1}19[\|]{0,1}' 

它给了我一些错误的结果,如下所示。

  1. 19|21|
  2. 0|19|20|22|
  3. 19|
  4. 0|919|

我想使用正则表达式匹配精确19,我不想0|919|在结果此值。任何人都可以给我准确的正则表达式吗?

+1

可能我建议使用[RegExr](http://gskinner.com/RegExr/)?您可以粘贴数据,然后播放数据并查看实时选择的内容。 – Alex

回答

0

为什么正则表达式,就像是足够的

SELECT * 
FROM ad 
WHERE platform_specific_selection 
LIKE '%|19|%' 
+0

这不符合'19 | ...'或'... | 19'。 – Mat

3

这应该工作:

select * from t where a REGEXP '(^|[|])19([|]|$)'; 

(这样做是为了让无论是|或启动的弦在左边,和|或右端的字符串末尾)。

+0

谢谢!非常感谢 – Jimit

+0

你能告诉我如何学习正则表达式? – Jimit

+0

http://www.regular-expressions.info/是一个开始的地方。 – Mat