1

私は2つのテーブルを持っています

student:
(student_id, student_name)

license:
(license_id, student_id)

そして、学生IDのリストがあります(たとえば、「3,4,5」)

テーブル license の 3(リスト サイズ) 行を更新し、それぞれの student_id フィールドを null から 3,4,5 に変更したいと考えています。

それ、どうやったら出来るの?更新のループを実行することは、私にとって適切な解決策ではありません。前もって感謝します。

4

1 に答える 1

1

ID パーサーの MS SQL バージョンがあります。これを使用して、ID を含む単一の列を持つテーブルを生成できます。varchar(max) 型のパラメーターを受け取ります。次のようなselectステートメントで使用できます

SELECT * FROM TABLENAME
WHERE COLUMNAME IN (SELECT value FROM parseIDs ('1,2,3'))

関数は次のとおりです。

CREATE FUNCTION parseIDs  
(
    @IDList VARCHAR(MAX)
)
RETURNS @IDs TABLE (value VARCHAR(80))
AS
BEGIN
    IF @IDList is null
        RETURN

    DECLARE @Len INT, 
            @Pos INT, 
            @Cur INT

    SELECT @Pos = 0, 
           @Len = 0, 
           @Cur = 1, 
           @IDList =  CASE 
                        WHEN SUBSTRING(@IDList, LEN(@IDList), 1) = ',' THEN @IDList 
                        ELSE @IDList + ',' 
                      END

    SELECT @Pos = CHARINDEX( ',', @IDList, @Cur)
    WHILE (@Pos <> 0)
    BEGIN
        INSERT @IDs VALUES (LTRIM(SUBSTRING( @IDList, @Cur, (@Pos - @Cur))))
        SELECT @Cur = @Pos + 1
        SELECT @Pos = CHARINDEX( ',', @IDList, @Cur)
    END
    return
END
于 2012-06-01T09:21:04.647 に答える