Дали поле в MySQL съдържа даден стринг?

DownFall

Registered
Имам поле със съдържание напеример
Код:
-1,0,5,39,41,6,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,42,43,44,45

Въпроса ми е, как да формулирам заявката, така че да проверявам дали например числото 0 го има? Хрумна ми да използвам

Код:
LIKE %0%

но така ще ми върне и 10, 20, 30 и т.н.

Ако пък използвам
Код:
LIKE %,0,%
няма гаранция, че работи, защото ако е първи запис, няма запетая от пред, а ако последен - от зад.

Как може да се получи?
 
PHP:
LIKE 0 OR LIKE 0,
Знакът % игнорира един знак от стринга. И в втория твой случай пак ще намира 20, 30 и т.н.

Едит: Или по скоро:
PHP:
LIKE 0 AND LIKE 0,
 
Ето с повече php. Не е много ефективно откъм производителност.

<?php
$sql = "SELECT * FROM pole";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$rows = mysql_num_rows($result);

for($i=0; $i<$rows; $i++) {
$row[$i];
if ($row[$i] == 0) {
echo "има стойност нула";
}
}
?>


може и с in_array()
 
Най-лесния начин за който се сетих.
PHP:
$q = mysql_query("SELECT * FROM tablica WHERE chislo=0");
$n = mysql_num_rows($q);
if($n == 0)
{
echo "не съществува";
}
else
{
echo "същестува";
}
 
Ако в таблицата имаш поле, в което съхраняваш числа по този начин, това означава само едно - неправилна структура. За да оптимизираш (процеса се нарича "нормализация"), трябва да имаш втора таблица, където на отделни редове да имаш всяко едно от тези числа и референция към основната таблица

[sql]
create table category (
id int(10) unsigned not null primary key auto_increment,
name varchar(100) not null unique
);

INSERT into category values (NULL, 'Programming'), (NULL, 'Databases');

create table book (
id int(10) unsigned not null primary key auto_increment,
title varchar(100) not null
);

INSERT into book values (NULL, 'PHP/MySQL professional projects');

create table book_category (
id int(10) unsigned not null primary key auto_increment,
book_id int(10) unsigned not null,
category_id int(10) unsigned not null
);

INSERT into book_category values (NULL, 1, 1), (NULL, 1, 2);

#search by category id = 2
SELECT book.*, category.name from book left join book_category on book.id = book_category.book_id left join category on book_category.category_id = category.id where book_category.category_id = 2;
[/sql]
 
exec каза:
Ако в таблицата имаш поле, в което съхраняваш числа по този начин, това означава само едно - неправилна структура. За да оптимизираш (процеса се нарича "нормализация"), трябва да имаш втора таблица, където на отделни редове да имаш всяко едно от тези числа и референция към основната таблица

Евала. Най-накрая някой мислещ
 

Back
Горе