MySQL에서 IF 절 안에 LIKE를 사용하고 오류를 가져 오려고합니다. 나는이 할 경우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
을하지만 여러 가능성을 확인해야합니다 - 카페, Cafe1, Cafe2 등이있을 수 있습니다 난에 대한 b.booth_number
을 반환하려면 해당 필드 값에 Cafe가 포함 된 레코드.
이
는 오류가 내가 얻을 수 있습니다 :PDOException : SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1064 당신은 당신의 SQL 구문에 오류가 있습니다 ; 이 올바른 구문을위한 MySQL 서버 버전과 일치하는지 확인하십시오. 'AS booth_number, nc.site_url AS 웹 사이트, 2 행에서 IF (nc.ismi_status = 1, '회원 ',' ') SELECT nc.web_name AS company_name, IF booth_number, nc.site_url AS 웹 사이트 IF (nc.ismi_status (n.booth_number), b.booth_number, 부분 문자열 (b.booth_number, 4) = 1, 'Member', '') AS member_status FROM {ismi.booth_sale} bs JOIN {ismi.booth} b bs.booth_id = b.booth_id JOIN {ismi.new_people} np ON bs.contact_id = np. id 조인 {ismi.new_company} nc ON nc.id = np.company_id 위치 b.show_event_id = 298 AND 상태 IN (44,45) 주문 3 3
누구나 내가 잘못하고있는 것을 말해 줄 수 있습니까? 아니면 다른 방법이 있습니까?
멋진 catch by newfurniturey. 나는'booth_number'에 대한'booth_number' 앨리어스를 갖는 것이 약간 위험 할 수 있음을 지적하고자합니다. 차별화하는 것이 도움이 될 수 있습니다. – Smandoli
좋은 지적입니다. 나는이 코드를 물려 받았고 작동하고있어, 나는 그걸 가지고 바이올린을하지 않았다. 하지만 코드에서 코드를 작성해 보겠습니다. – EmmyS