MS-SQL В заявлении - PullRequest
       25

MS-SQL В заявлении

1 голос
/ 01 июня 2009
Select a, b, c from table where a in (1, 2, 3)

Что если список находится в столбце?

Я попробую это будет ошибка:

Select a, b, c from a in b

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

Это не о присоединении или in (выберите b из таблицы)

Тип столбца b - nvarchar, данные - это список, например, '1,2,5'

Столбец типа int.

Ответы [ 5 ]

1 голос
/ 01 июня 2009

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

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

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

1 голос
/ 01 июня 2009

Прочитав ваш вопрос, вот что вы хотите:

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 голосов
/ 02 июня 2009

См. Требуется справка SQL-запроса, сопоставляющая параметр списка хранимых процедур с отдельными столбцами . В нем показано, как написать UDF, который будет принимать ваш столбец «список» и возвращать таблицу, которую вы можете использовать для соединения с таблицей, из которой вы выбираете.

0 голосов
/ 01 июня 2009

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

0 голосов
/ 01 июня 2009

Я думаю, что вы хотите присоединиться к столам?

SELECT a, b, c
FROM a
JOIN b ON a.ID=b.ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...