2013-04-16 3 views
1

나는이 Q에 대한 간단한 대답이 없다고 생각하지만, 어쨌든 간다. 나는 Codeigniter를 MySQL과 함께 사용하고있다. 나는 같은 쿼리를 데이터베이스에서 자원 제목의 목록을 당겨 :알파벳순으로 "the"를 무시한 목록 정렬

SELECT * FROM resource ORDER BY title ASC 

과 "는"처음에 무시 알파벳 순으로 정렬하고 싶습니다. (another question에서)처럼 뭔가 :

  • 땅 돼지
  • 비틀
  • 드래곤

표시하는 코이 푸 등 :

  • 땅 돼지
  • 사탕 무우 이것은 그대로 르
  • 드래곤

One answer는 가능성이 될 수있는 몇 가지 지저분한 SQL을 제안한 코이 푸,하지만 난 모든 프로젝트에 적용 할 수있는이에 대한 일반적인 알고리즘을 좀하고 싶습니다 일반적인 문제.

간단한 대답이없는 경우는 그것은 중요하지 않습니다 - 그것은을 위해 단지 '은혜 노트'의 내 사용자 :에 대해 어떻게

답변

3

:

order by (case when title like 'The %' then substring(title, 5, 1000) else title end) 
+0

감사, 고든, 균열이 그것. 필자는 SQL 함수에 익숙하지 않고, 몇 가지만 사용하고 있지만, MySQL 매뉴얼을 함수 (http://dev.mysql.com/doc/refman/5.5/en/functions.html)에서 살펴 본다. 네가 한 일을 내가 이해할 수있게 해준다. 꽤 간단한 방법을 알고있을 때 :) –

0

당신은 '제목'에 대한 중복 열을 만들 수 있습니다 그런 다음 해당 열에서 'the'를 모두 제거하십시오.

첫 번째 업데이트하면 수정 된 열을 밖으로 떠나 이런 식으로 뭔가를 검색 할 때

ALTER TABLE resource 
ADD title_less_the varchar(50) (same as title) 

UPDATE resource 
SET title_less_the = title 

update resource (
set title_less_the = replace(title_less_the, 'the ', '') 

그런 다음 '제목'열을 복제 할 테이블 :

SELECT column1, column2, column3 FROM resource 
ORDER BY title_less_the ASC