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

SQLのサブクエリでLIKEとINを使用する

    照合する文字列とuseridを含む文字列の両方を折り返すことができます , で一致させたい 完全なuseridと確実に一致するように区切り文字 (LIKEを単純に使用するのではなく 周囲の区切り文字を考慮せず、部分的なuseridのみを照合します )。このように:

    SELECT *
    FROM   "USER" u
    WHERE  EXISTS (
      SELECT 1
      FROM   special_user su
      WHERE  ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
    )
    

    サンプルデータの場合:

    CREATE TABLE "USER" ( UserID, UserPeers, Gender ) AS
    SELECT 'Mike',  'Tom1, Bob1',   'M' FROM DUAL UNION ALL
    SELECT 'John',  'Tom1, Greg1',  'M' FROM DUAL UNION ALL
    SELECT 'Sally', 'Mike1, John1', 'F' FROM DUAL UNION ALL
    SELECT 'Sara',  'Sally1, Bob1, TimTom1', 'F' FROM DUAL;
    
    CREATE TABLE special_user ( UserID ) AS
    SELECT 'Tom1' FROM DUAL UNION ALL
    SELECT 'John1' FROM DUAL;
    

    注:Sallyを変更しました ピアを追加するにはTimTom1 Tom1であっても、一致しないようにする必要があります 部分文字列が含まれています。

    どの出力:

    db <> fiddle こちら



    1. 最も異なる本を数えるのに援助が必要

    2. ファブリックを使用してpostgresqlユーザーを作成するにはどうすればよいですか

    3. SELECTの結果がmysqlとsqliteで異なるのはなぜですか?

    4. データベースへのタグの保存。タグを1回または何度も保存しますか?