2017-08-15 5 views
4

現在、セミコロン区切りのID列内に特定のIDが存在するすべての行を選択しようとしています。セミコロンで区切られた列の値に基づいて行を選択します。PL/SQL

表:

===================== 
TOOL_ID | TOOL_USERS 
--------------------- 
    1  1;2;3 
    2  1;3 
    3  1 
===================== 

Iは、例えば、特定のユーザがアクセスできるすべてのツールを選択すると、ユーザIDが3である、所望の結果:

TOOL_ID | TOOL_USERS 
--------------------- 
    1  1;2;3 
    2  1;3 

Iはこの設計が正規化されていないことを知っていますが、データベースを変更/変更する能力はありません。私はいつもすべての行を照会し、結果をループしてユーザーIDを含まないものを削除することができますが、これはきれいでクリーンなクエリです。

これは可能ですか?おかげさまで

+0

TOOL_USERSのエントリは "2; 11; 21"となりますが、すべてのIDにidやIDの後にセミコロンが含まれているわけではありません。だから、あなたは偽陽性にならないように見なければなりません。 –

答えて

4

ワイルドカードでLIKEキーワードを使用できます。 13とかは3

SELECT TOOL_ID, TOOL_USERS FROM YourTable WHERE ';' || TOOL_USERS || ';' LIKE '%;3;%' 

誰かが私はうまくPLSQLにこれを翻訳していなかったなら、私に知らせて一致していないので、私が先頭と終了セミコロンが含まれています。

+2

'||'はOracleの連結演算子です。 –

+1

@vkpありがとう。 – justiceorjustus

+0

これは完璧ですので大変ありがとうございます。 – Sunden

関連する問題