マルチセレクト項目の検索条件について質問です。 DBの「注意コード(マルチセレクト)」を検索条件に使用しています。 画面側ではチェックボックスで複数選択できるようにしており、 APIの where 条件では以下のように指定しています。 現在の挙動としては、 例)「1」「2」を選択した場合 DB側も「1 と 2 の両方を含むレコード」でないとヒットしない という形になっており、 実質的に AND 条件(すべて含む)での検索になっています。 実現したいこと 選択した値のうち、どれか1つでも含んでいればヒットさせたい(OR 条件) という検索を行いたいです。 例:「1」「2」を選択した場合 → 注意コードに「1」または「2」のどちらかを含むレコードを取得したい 質問 マルチセレクト項目を OR 条件(いずれかを含む)で検索する方法はありますでしょうか? MULTISELECT 以外に利用可能な記法や演算子があればご教示いただきたいです。 where 句の具体例があれば併せて教えていただけると助かります。 よろしくお願いいたします。
if (!empty($AttentionCodes)) {
if (!is_array($AttentionCodes)) {
$AttentionCodes = [$AttentionCodes];
}
$multiSelectStr = implode("','", $AttentionCodes);
$where .= urlencode(" AND @AttentionCodes = MULTISELECT('" . $multiSelectStr . "')");
}コメント
ナレッジ
向上チーム
ご連絡いただきましてありがとうございます。 マルチセレクト項目をOR検索を行う場合には、「ANYCONTAINS」を使用することで可能です。 OR検索の例につきましては、コードを記載しますので、ご確認ください。 また、APIでの条件式の指定方法につきましては、サポートサイトに記載がございますので、ご確認いただけますと幸いです。 ▼条件式や計算式の記法 > APIにおける指定方法 https://support.spiral-platform.com/api/16.html#API%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E6%8C%87%E5%AE%9A%E6%96%B9%E6%B3%95 ご確認の程、よろしくお願いいたします。
// 全体では、「?where= @multiSelect ANYCONTAINS('1','2')」となります。 // 「@」や「'」などはURLエンコードを行う必要がございます。 // 下記式は、マルチセレクト項目(@multiSelect)の「1、2いずれかの値を含む」レコード取得を行うコードの抜粋となります。 $where = "?where="; $where_value = urlencode("@multiSelect ANYCONTAINS('1','2')"); $resultRecordListSelect = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records" . $where . $where_value);-
いいね
2026年3月5日(木)