Mümkün takip ediyor?
DB alan içerir: 1,2,3,4
$a=1;
$selqry="select * from table where field={contains $a}";
Thanks, B.
MySQL FIND_IN_SET(str,strlist) function orada size yardımcı olabilir (edit: oops .... durumda MySQL kullanıyorsanız)
Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings. A string list is a string composed of substrings separated by “,” characters.
SELECT
x,y,z
FROM
tablename
WHERE
FIND_IN_SET(':id', field)
(: $ A değeri ile id ama kodlanmış emin / doğru kaçtı yapmak size kullanarak değilseniz pdo/prepared statements, değiştirin)
Gerçi mükemmel index-dostu değil ... senin NEREDE-yan tümcesinde bu işleve sahip olan bir tam tablo taraması ile bitireceğiz.
Tabii, bu mümkün.
Sakıncası yoksa "1"
uyan "2,3,11,4"
. Sen INSTR
veya LIKE
kullanarak bunu yapabilirsiniz. Örnek:
SELECT *
FROM tbl
WHERE INSTR(field, '1') != 0
Eğer istemiyorsanız "1"
sizin VTYS (MySQL, örneğin, yapar) destekliyorsa regex "2,3,11,4"
, bir (yavaş) kullanmak gerekecek maç:
SELECT *
FROM tbl
WHERE field REGEXP '[[:<:]]1[[:>:]]'
Ancak, daha iyi bir soru bu iyi bir fikir olup olmadığıdır. Ve buna cevabı kocaman bir no. Tek bir alanda birden fazla değer saklamanıza olmamalıdır. Böyle bir durum gerçekten normalization yararlanacak.