2010-11-13 2 views

ответ

2

Это не таблица normalized.

Вы можете использовать LIKE оператор:

SELECT * 
FROM sometbl 
WHERE field3 LIKE '%1%' 

Edit:

Это, конечно, будет также соответствовать 11, 10, 101 и т.д ...

Если вы знаете 1 может только есть в начале, вы можете использовать это:

SELECT * 
FROM sometbl 
WHERE field3 LIKE '1,%' 
OR field3 = '1' 

Если 1 может появиться в любом месте, это будет работать:

SELECT * 
FROM sometbl 
WHERE field3 LIKE '1,%' 
OR field3 LIKE '%,1' 
OR field3 LIKE '%,1,%' 
OR field3 = '1' 

Хотя лучший вариант заключается в нормализации.

+0

LIKE '% 1%' будет соответствовать 10 –

+0

Но что выберет и 101, не так ли? – lam3r4370

+1

Затем используйте: 'WHERE field3 LIKE '% 1,%'' - еще лучше: нормализовать таблицу! –

0
SELECT * 
FROM sometbl 
WHERE field3 LIKE '%,1' OR field3 LIKE '1,%' OR field3 LIKE '%,1,%' 
+0

Нет , не будет работать. – Constantin

+0

^^ oops, updated .. – Dienekes

1

Если разделенные запятыми значения числа, а не цифры, не используйте только LIKE '%1%', он будет включать в себя «5,21» и «14,65», а также. Если это так, вы можете использовать что-то взломанное как SELECT * FROM sometbl WHERE field3 LIKE '%,1' OR field3 LIKE '%,1,%' OR field3 LIKE '1,%' OR field3 = '1'. Беспощадно, но семантически правильно.

+0

Но в любом случае вам лучше потратить некоторое время на нормализацию своей базы данных, это сэкономит вам много времени и сил в будущем – Dyppl

Смежные вопросы