mySQL の IF 句内で LIKE を使用しようとすると、エラーが発生します。
SELECT nc.web_name AS company_name,
IF((b.booth_number LIKE '%Cafe%', b.booth_number, substring(b.booth_number,4)) AS booth_number,
nc.site_url AS website, IF (nc.ismi_status = 1, 'Member','') AS member_status
FROM booth_sale bs JOIN {ismi.booth} b ON bs.booth_id = b.booth_id
JOIN ismi.new_people np ON bs.contact_id = np.id
JOIN ismi.new_company nc ON nc.id = np.company_id
WHERE b.show_event_id = 298 AND status IN(44,45) ORDER BY 3
これを行うと、クエリは正常に機能します。
IF((b.booth_number = 'Cafe', b.booth_number, substring(b.booth_number,4)) AS booth_number
ただし、複数の可能性を確認する必要があります。Cafe、Cafe1、Cafe2 などがある可能性がありb.booth_number
、そのフィールド値に Cafe が含まれるすべてのレコードを返したいと考えています。
これは私が得るエラーです:
PDOException: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、2 行目の 'AS ブース番号, nc.site_url AS website, IF (nc.ismi_status = 1, 'Member','') ' の近くで使用する正しい構文を確認してください: SELECT nc. web_name AS company_name, IF((b.booth_number LIKE '%Cafe%', b.booth_number, substring(b.booth_number,4)) AS ブース番号, nc.site_url AS ウェブサイト, IF (nc.ismi_status = 1, 'メンバー' ,'') AS member_status FROM {ismi.booth_sale} bs JOIN {ismi.booth} b ON bs.booth_id = b.booth_id JOIN {ismi.new_people} np ON bs.contact_id = np.id JOIN {ismi.new_company} nc ON nc.id = np.company_id WHERE b.show_event_id = 298 AND ステータス IN(44,45) ORDER BY 3
誰が私が間違っているのか、またはこれを行う別の方法があるかどうかを教えてもらえますか?