2017-06-21 8 views
0

私はカンマで区切られたIDを持つ複数のフィールドを削除したり、更新するmySQLfind_in_set(idField,:ids)を使用し、前に、例:どのようにSYBASEでのMySQLのFIND_IN_SETを使用するには?

UPDATE USER SET name = 'a' WHERE find_in_set(id,'1,2,3,4') > 0 

はどのようにして、クエリをカスタマイズおよびSybaseでそれを使用することができますか?

答えて

0

Sybaseにはfind_in_setのような機能がないため、いくつかのオプションがあります。googleカンマ区切りリストを一時テーブルに解析するか、execute-commandで動的SQLを使用する関数です。あなたが使用しているどのSybaseのデータベース製品言及していない、またバージョン(?ASEのSQLAnywhereをIQアドバンテージ???):

+0

私はSybaseがFIND_IN_SETを持っていけない知っています。私は、Sybase – Adam

1

NOTE。 ASE)はFIND_IN_SET(のようなものを持っていませんが、私は他のデータベース製品のために話すことはできません。独自のユーザー定義関数を作成

  • ;:ASEの観点から

    あなたはいくつかのオプションを持っていますあなたは、T-SQLは、およびJavaオプション

  • ビルド動的問合せをし、ビアが実行提出()(ASE 15.0.2以降)

  • が利用可能ASE機能を使用するようにクエリを書き直す必要があり(例えば、PATINDEX()、 CHARINDEX())

  • のような演算子を使用するようにクエリを書き直す

    (例えばalternate to find_in_set() for non-MySQL databasesを参照)

+0

で申し訳ありませんが、私はASEを使用するのと同じ機能を呼び出そうと私はそれを修正するためにINを使用します。ところでJavaの8で、私は 'StringJoinerユーザID =新StringJoiner( " ''"、 " '"、 "'") を使用する必要があります。 userids.add( "ID1")。 userids.add( "id2"); ' クエリを呼び出すには – Adam

+0

ああ、そうですね、リストをハードコーディングしていれば単に' in'を使うように書き直すだけです(明らかに)もっと簡単になるでしょう:-) – markp