sql для совпадения числа в строке - PullRequest
2 голосов
/ 17 марта 2011

У меня есть таблица, в которой в одном из полей указан список идентификаторов, разделенных запятыми (не моя работа). Я хочу знать, могу ли я использовать LIKE для совпадения числа в этой строке? Проблема в том, что я не хочу получать похожие цифры. Есть ли способ сопоставить число без числовых символов с обеих сторон?

SELECT * FROM table WHERE activitiesids LIKE 6

   | activitiesids |
---+---------------+---
   |   3,16,8,6    |
---+---------------+---
   |       6       |
---+---------------+---
   |      7,560    |
---+---------------+---

Ответы [ 2 ]

3 голосов
/ 17 марта 2011

Не проверял, но вы можете попробовать что-то вроде этого:

SELECT * FROM table WHERE activitiesids REGEXP '[[:<:]][0-9]+[[:>:]]';
2 голосов
/ 17 марта 2011

Примерно так:

WHERE ids LIKE '%,16,%' OR ids LIKE '%,16' OR ids LIKE '16,%';

В Postgresql даже есть сопоставление с образцом - я не знаю, для mysql:

WHERE ids ~ '^(.*,)?16(,.*)?$'; 
...