2014-09-23 4 views
0
작동하지

내가 .. 이름은 다음과 같은 코드를 사용하여 테이블에 존재하는지 여부를 확인하기 위해 저장 프로 시저를 사용했다 이 (YY) GG %의 MySQL의

BEGIN 
IF ids = 0 THEN 
SELECT * FROM table_name WHERE `table_id` = alb_id AND name LIKE CONCAT('%',var_name,'%'); 
END IF; 
END 

나는 해결책을 가지고 이름에 특수 문자 또는 대괄호 (예 : XXXX)가 포함되어 있지 않은 경우

이름에 괄호가 포함되어 있으면 XX (YY) GG와 같은 결과가 나오지 않았 음을 의미합니다. 이름이 이미 내가이 절차를 사용하여이 조건을 다시 삽입하지 말아야 존재하는 경우

이에서 :

는 최적의 솔루션

편집 저를 제언한다. 이 mysql_num_rows도를 반환하는 경우> 0 내 숨기기 .. 난 다른 내가 내 테이블에 이름을 삽입합니다, 삽입을 못해

내 샘플 이름은

..

  • 켜기 테이블 (라이브 음향)
  • 을 의미한다 심장
  • 사람처럼 당신 (라이브 음향)
  • 바로 지금 (나 나 나)는
  • 당신에게처럼 당신에게 훨씬 더 긴
  • 누군가를 유지

이름이 "Someone Like You"이고 "Someone Like You (Live Acoustic)"라는 이름이 다른 두 개의 이름이고, "Someone Like You (Live Acoustic)"이름이 이미 존재하거나 아니 ..

어떻게해야합니까?

+0

여기 var_name은 프로 시저를 통해 전달 된 변수입니다 – gowri

+3

왜 부분 문자열이 같은 이름이 될 수 있습니까? 나는. "Elizabeth"가 있다면 "Eliza"는 WHERE 조건을 충족하지만, "Eliza"가 처음에는 "Elizabeth"가 귀하의 상태를 충족시키지 못합니다. – VMai

+0

몇 가지 샘플 데이터, 결과 및 원하는 결과를 추가 할 수 있습니까? 질문의 제목에있는 표현은 잘 작동합니다. [this fiddle] (http://sqlfiddle.com/#!2/4da0f/2)를 참조하십시오. – VMai

답변

0
CREATE TABLE `stack_test` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `text` varchar(100) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB CHARSET=utf8; 


INSERT INTO `blur_new`.`stack_test` (`id`, `text`) VALUES ('1', 'run (rabbit) run'); 
INSERT INTO `blur_new`.`stack_test` (`id`, `text`) VALUES ('2', 'test'); 

set @a = 'n (rabbit)'; 
select * from stack_test where text like concat('%',@a,'%'); 

결과 : 1 | 실행 (토끼) 그래서

를 실행, 그것을 작동합니다.

검사 절

검사가 어떻게 값

는거야 당신에게 데이터 유형을 확인해야 할 수도 있습니다에게 전달되는 경우의 조건의 나머지. 바로 여기에 뭔가가 있다는 느낌이 있습니다