2013-06-19 4 views
1

제공된 매개 변수가 enumfalse 인 경우 selecttrue이 될 저장 프로 시저를 작성하려고합니다.값이 MySQL enum에 있는지 확인하는 방법은 무엇입니까?

DROP PROCEDURE IF EXISTS is_type_of_fruit; 

delimiter // 
CREATE PROCEDURE is_type_of_fruit (fruit VARCHAR(20)) 
BEGIN 
    DECLARE fruit_types ENUM('APPLE','GRAPE','ORANGE'); 
    SELECT fruit IN(fruit_types); 
END// 

CALL is_type_of_fruit('APPLE'); 

내가 항목이 옵션 목록에 있다면 나는 일반적으로 검사 할 때 사용하는 표준 IN 구문을 사용할 수 없다는 것을 나타납니다 : 이것은 내 현재 시도이다. ENUM 유형에 사용해야하는 다른 전략이 있습니까?

답변

1

똑같은 것을 시도하는이 아주 오래된 질문에 걸쳐 왔습니다. 아마 원래의 포스터에 많은 사용은 아니지만 함께 다음 사람을 위해이 답변을 추가했습니다.

DELIMITER // 

DROP PROCEDURE IF EXISTS is_type_of_fruit // 
CREATE PROCEDURE is_type_of_fruit (fruit VARCHAR(20)) 
BEGIN 
    DECLARE fruit_types ENUM('APPLE','GRAPE','ORANGE'); 

    SET fruit_types = fruit; 

    SELECT IF(fruit_types = fruit, TRUE, FALSE); 
END// 

DELIMITER ; 

mysql> call is_type_of_fruit('cabbage'); 
+--------------------------------------+ 
| IF(fruit_types = fruit, TRUE, FALSE) | 
+--------------------------------------+ 
|         0 | 
+--------------------------------------+ 
1 row in set (0.00 sec) 

mysql> call is_type_of_fruit('orange'); 
+--------------------------------------+ 
| IF(fruit_types = fruit, TRUE, FALSE) | 
+--------------------------------------+ 
|         1 | 
+--------------------------------------+ 
1 row in set (0.00 sec) 

이 방법은 엄격한 모드가 아니므로이 방법을 사용하려면이 오류를 직접 잡아야합니다.

관련 문제