Инструмент управления метаданных с открытым исходным кодом [закрывается]

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

Таким образом, Вы только анализируете однажды.

является самым легким использовать одно из 'Разделения' UDFs, но столько людей отправило примеры тех, я полагал, что пойду различным путем;)

Этот пример составит временную таблицу для Вас, чтобы присоединиться на (#tmpDept) и заполнить его идентификатором отдела, в котором Вы передали. Я предполагаю, что Вы разделяете их с запятыми, но Вы можете - конечно - изменяют его на то, что Вы хотите.

IF OBJECT_ID('tempdb..#tmpDept', 'U') IS NOT NULL
BEGIN
    DROP TABLE #tmpDept
END

SET @DepartmentIDs=REPLACE(@DepartmentIDs,' ','')

CREATE TABLE #tmpDept (DeptID INT)
DECLARE @DeptID INT
IF IsNumeric(@DepartmentIDs)=1
BEGIN
    SET @DeptID=@DepartmentIDs
    INSERT INTO #tmpDept (DeptID) SELECT @DeptID
END
ELSE
BEGIN
        WHILE CHARINDEX(',',@DepartmentIDs)>0
        BEGIN
            SET @DeptID=LEFT(@DepartmentIDs,CHARINDEX(',',@DepartmentIDs)-1)
            SET @DepartmentIDs=RIGHT(@DepartmentIDs,LEN(@DepartmentIDs)-CHARINDEX(',',@DepartmentIDs))
            INSERT INTO #tmpDept (DeptID) SELECT @DeptID
        END
END

Это позволит Вам передавать в одном идентификаторе отдела, несколько идентификатор с запятыми, промежуточными их, или даже несколько идентификатор с запятыми и пробелами между ними.

Поэтому, если Вы сделали что-то как:

SELECT Dept.Name 
FROM Departments 
JOIN #tmpDept ON Departments.DepartmentID=#tmpDept.DeptID
ORDER BY Dept.Name

Вы видели бы названия всех идентификаторов отдела, в которых Вы передали...

Снова, это может быть упрощено при помощи функции для заполнения временной таблицы... Я главным образом сделал это без одного только для уничтожения некоторой скуки:-p

- Kevin Fairchild

6
задан S.Lott 28 July 2009 в 17:19
поделиться