0

我正在尝试从我的数据库中获取在垂直管道分隔值中有一个数字的记录。

我有这样的查询:

SELECT * FROM level_3 

WHERE 
    date_end = -6 

AND 
    ccode = 'GB'

AND ( 
    responsible LIKE '%5%' OR 
    accountable LIKE '%5%' OR 
    consulted LIKE '%5%' OR 
    informed LIKE '%5%'
    )

结果如下:

date_end    ccode    responsible    accountable    consulted    informed
-6          GB       |6|            |6|            |8|9|15|     |8|
-6          GB       |6|5|          |6|            |8|          |16|

但是它与LIKE %5%匹配 15但我只希望它匹配确切的数字。我该怎么做呢?

4

3 回答 3

3

试试这个查询:

SELECT * FROM level_3 

WHERE 
    date_end = -6 

AND 
    ccode = 'GB'

AND ( 
    responsible LIKE '%|5|%' OR 
    accountable LIKE '%|5|%' OR 
    consulted LIKE '%|5|%' OR 
    informed LIKE '%|5|%'
    )
于 2013-04-18T16:10:40.267 回答
2

LIKE 有一个正则表达式挂件。

SELECT * FROM level_3 
WHERE date_end = -6 
AND ccode = 'GB'
AND ( 
    responsible REGEXP '\|[0-9]+\|' OR 
    ...
)

(备注其他用途:用于从头到尾'^ ... $'的总匹配。)^$

于 2013-04-18T16:16:02.190 回答
0

你想要什么就像

Where concat('|',responsible,'|') like '%|5|%'
于 2013-04-18T16:21:55.453 回答