2012-04-30 4 views
0

I имеют следующие значения в 4 строки и 1 столбец в SQL Server 2005.ВЫБРАТЬ запрос в SQL Server 2005

7,75,8,95,55 
8,75,8,95,66 
6,75,86,7,55 
74,75,84,95,55 

Если я прохожу значение 7 в SQL запросе, мне нужно, чтобы получить точные строки, которые имеют значение 7 .

+4

списки разделенных запятыми значений внутри одного столбца ужасно плохая идея .... не делайте этого! Вы нарушаете первую нормальную форму реляционной базы данных, и это делает поиск, как ваш, здесь сложным и сложным ..... –

ответ

2

Предположительно, вы хотите, чтобы «7» соответствовало числу, но предположительно не другие цифры, содержащие цифру «7» (например, 75).

Все, что вы делаете с этим, будет довольно уродливым, поэтому вам будет намного лучше просто изменить таблицу, если это вообще возможно. Я полагаю, что если у вас нет выбора, вы могли бы сделать что-то вроде:

select whatever from your_table where 
    your_column like '7,%' or 
    your_column like '%,7,% or 
    your_column like '%,7' 

Первые обложки, когда «7» является первым номером в группе. Второй охватывает, когда он находится в середине группы, а третий охватывает, когда он последний в группе.

Это некрасиво, и если вы не имеете дело с очень небольшими объемами данных, это почти наверняка будет мучительно медленным, а также. Я повторю: вы действительно будете лот лучше, чем исправлять базовый дизайн.

+0

Я отправлял аналогичный ответ ... Я думаю, что здесь мы пропустим ряд с автономным «7 ' – CapelliC

+0

@chac: Да, если есть возможность правильного поля, которое имеет только одно значение, тогда мы хотим добавить 'или your_column =' 7''. –

2
declare @T table 
(
    Col varchar(20) 
) 

insert into @T values 
('7,75,8,95,55'), 
('8,75,8,95,66'), 
('6,75,86,7,55'), 
('74,75,84,95,55') 

declare @Val varchar(10) 
set @Val = '7' 

select Col 
from @T 
where ','+Col+',' like '%,'[email protected]+',%' 

SE-Data