2009-06-01 2 views
1
Select a, b, c from table where a in (1, 2, 3) 

Что делать, если список находится в столбце?MS-SQL В заявлении

Стараюсь это будет ошибка:

Select a, b, c from a in b 

Извините за не ясно, на мой вопрос.

Это не о присоединиться к или в (выберите из таблицы б)

Колонка типа Ь NVARCHAR, данные список, как этот '1,2,5'

Колонка A type - int.

+0

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

ответ

-3

Я думаю, вы хотите ПРИСОЕДИНИТЬСЯ по столам?

SELECT a, b, c 
FROM a 
JOIN b ON a.ID=b.ID 
+0

столбец b - это список. – March

0

В SQL столбец обычно одного из так называемых «скалярных» типов данных: числа, даты/времени, строки - смотри, например, MSDN. Если вы лучше объясните, в каком смысле вы получили «список» в столбец b и как, например, покажите нам заявление CREATE TABLE a, мы можем помочь вам лучше!

1

После прочтения вашего вопроса, это то, что вы хотите:

SELECT 
    a,b,c 
FROM 
    tblA 
WHERE 
    b LIKE CAST(a as nvarchar) + ',%' 
    OR b LIKE '%,' + CAST(a as nvarchar) + ',%' 
    OR b LIKE '%,' + CAST(a as nvarchar) 

Это должно сделать это.

+0

Нет, не будет. Обратите внимание на размещение запятых. Это уже покрыто. Booyah. – Eric

+0

@ Эрик: Вы правы, я удалю комментарий. – Andomar

1

Многие ответы, указывающие в правильном направлении, но я думаю, что это один будет действительно работать:

SELECT a, b, c 
FROM table 
WHERE ',' + b + ',' LIKE '%,' + CAST(a as varchar) + ',%' 

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

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