sql >> データベース >  >> RDS >> Sqlserver

SQL Serverのストアドプロシージャに渡されたVARCHARを解析するにはどうすればよいですか?

    可能であれば、この種のことにはvarcharを使用せず、テーブルを使用してください。値のパラメータ 代わりに。

    テーブル値パラメーターを使用するには、最初にユーザー定義のテーブルタイプを宣言する必要があります。

    CREATE TYPE IntList As Table
    (
        IntValue int
    )
    

    次に、nvarcharの代わりにこの変数を受け入れるようにストアドプロシージャを変更します。

    create proc Sp_ReturnPrdoucts
        @BrandIds dbo.IntList readonly -- Note: readonly is a must!
    AS
    BEGIN
    
    SELECT * 
    FROM tbl_Products as p 
    join tbl_Brands b on p.ProductBrandId=b.BrandId 
    join @BrandIds ON(b.BrandId = IntValue)
    
    END
    

    問題は、IN() 演算子はコンマで区切られた変数のリストを期待しますが、その値がコンマで区切られた文字列であるという単一の変数を指定します。

    テーブル値パラメーターを使用できない場合は、SQLで文字列分割関数を使用して、varcharの値をintのテーブルに変換できます。スプリッターはたくさんあります。この記事を読むことをお勧めします 選ぶ前に。



    1. PHP-SQLクエリを一重引用符または二重引用符で囲みますか?

    2. MySQLは複数のテーブルから行を削除します

    3. SQLite DROP VIEW

    4. 関数/プロシージャパラメータとしてのOracleROWID