2010-11-18 2 views
0

"filename"이라는 열이있는 테이블을 쿼리하려고합니다. 내가 그 값을하고 파일 이름 열에서 검색 할 수있는 방법 PHP 페이지에 게시 제품 코드가있는 경우mysql을 사용하여 파일 이름의 일부인 제품 코드가있는 테이블을 쿼리하십시오.

은 실제 파일 이름이 "제품 코드 - category.jpg"로 구성되어

는 같음 곳 제품 코드?

대소 문자를 구분하지 않는 것이 좋을 것입니다.

+0

"게시 방법 : 어떻게? 양식을 통해? 변수로? –

+1

옙, 나는 실제로 내가 LIKE %를 사용할 수 있다고 생각하고 있었습니까? – Andy

+0

대소 문자를 구분할 수 있도록 latin1_general_ci 또는 utf8_general_ci와 같은 테이블 조합을 만듭니다. 질문의 다른 부분이 모호합니다. – ajreal

답변

1

mysql 검색은 기본적으로 대소 문자를 구별합니다. SELECT ... WHERE BINARY somefield = 'CaseSEnSITive'을 통해 대소 문자를 구분해야합니다. 당신이 원하는대로 검색에 관해서는, 당신은 할 수 :

SELECT 저쩌구, ㅋ 테이블 FROM WHERE 파일 이름 LIKE '%의 product_code_here %의'

하지만 당신의 제품 코드가있는 경우이 변수 길이를 많은 잘못된 반응을 생산할 수 (예를 들어 제품에는 코드 '1'이 있고 다른 많은 제품에는 코드 '11', '12', '13'등이 있습니다. 별도의 제품 코드 필드를 만들고 'LIKE'비교와 같이 부분 문자열 일치가 아니라 직접 비교할 수 있다면 번거 로움을 덜 수 있습니다.

+0

입력 용 Marc. 유효한 포인트! – Andy

0

"filename"열이있는 테이블과 동일한 테이블에 제품 코드가 정의되어 있지 않습니까? 우리 테이블을 보여줄 수 있습니까?

대부분 데이터베이스에서 대소 문자가 구분됩니다. (귀하의 문자셋 참조 : ex latin1_swedish_ci : 'ci'는 대소 문자를 구분하지 않음). 이 값이 기본값이므로이 값을 무시할 수 있습니다.

0

파일 구조를 분석하여 제품 코드 조회를 수행하려는 경우 테이블 구조가 효율적이지 않을 수 있습니다. 그러나, 당신은 아마이 같은 쿼리 뭔가 원하는 : 당신이 당신의 제품 코드와 별도의 열에 범주를 저장하는 경우

SELECT filename FROM mytable WHERE filename LIKE 'somestring-%'; 

을, 쿼리가 훨씬 더 빨리 될 수 :

SELECT filename FROM mytable WHERE product_code = 'somestring'; 
+0

입력 해 주셔서 감사합니다. 그게 내가 굴 렀던 것 – Andy

0

당신은 같은 것을 사용할 수 있습니다 :

$ sql = '테이블에서 선택 * strtoupper (파일 이름)' '.strtoupper ($ productcode).'% ';

+0

그게 멋지다! 감사 :) – Andy

관련 문제