私はアクセス権のテストを行うために書いています。私が見なければならない列の1つはABC|DEF|GHI|JKL
の形式であり、その列に存在する値があるかどうかを調べる必要があります。LIKEを使用したカラム内のデータのSQLテスト
問題は、複数の値を返すサブクエリのためにクエリでエラーが発生する原因となっている複数のテストが必要なことです。
私は@managers
内のいずれかの値が列の値(例えば、列の値:
ABC|DEF|GHI|JKL
)に存在するかどうかを確認するために、テストに取り掛かることができますどのように
-- Default permission
DECLARE @hasAccess BIT = 0;
-- Define our temp data
DECLARE @managers AS TABLE(personnelID VARCHAR(10))
-- Insert our data for the manager test logic
INSERT INTO @managers(personnelID) VALUES ('ABC')
INSERT INTO @managers(personnelID) VALUES ('XYZ')
SELECT *
FROM Employees AS e
WHERE e.QID = @QID
AND e.PersonnelIDList LIKE '%' + (SELECT personnelID FROM @managers) + '%'
はレコードに存在します。
あなたは、他のテーブルのように、あなたのテーブル変数を治療する必要があります。この場合、内部結合を使用するか、存在します。 –
複数の値を含む列が不適切な設計です。 –
このレガシーツールで私がここで作業できるものに限定して、私は同意して設計について理解しています。 – SBB