2017-04-11 10 views
0

今作成したストアドプロシージャはデータベースには触れません。SQL Serverが文字列値を渡し、値がハードコードされたリストに含まれていて、intを返すかどうかを確認します

擬似コード

CREATE PROCEDURE [dbo].[CustomerKeyChecker] 
    @ldccode VARCHAR(12) 
AS 
    @result int = 0 
BEGIN 
    DECLARE @listofCodes varchar(200) 
    SET @listofCodes = 'CLP, UIC, NSTAR, NSTARB, NSTARC, PSNH' 

    -- So lets say that the passed in @ldccode is "CLP" , well then I went to 
    -- set a @result = 1 

END 

リスト内のこれらのコードを検索するためのストリングを行うには、まともな方法は何ですか?

擬似コード:

substring(@lcdcode, @listOfCodes) ? 

ここでも、今、これはデータベースとは何の関係はありません、と私はSQLがあるだろう...誰かが「なぜでもSQLにこのデータを渡す」と言うだろうことを理解するために後で追加されるテーブルはなぜですか...

+1

親切http://stackoverflow.com/a/2657/1460189を参照してください。 –

答えて

1

各変数の最後に最初とカンマにスペースを追加することがあります。これは、偽陽性、すなわちSTARを防止するためである。 SIGN()に気付くこともあります。正の数なら1を、見つからなければ0を返します。

Declare @ldccode VARCHAR(12) = 'CLP' 
Declare @result int = 0 

declare @listofCodes varchar(200) 
SET @listofCodes = 'CLP, UIC, NSTAR, NSTARB, NSTARC, PSNH' 

Select @result=sign(charindex(' '[email protected]+',',' '[email protected]+',')) 

戻り

1 
関連する問題