복붙노트

[SQL] 그 조각하여 문자열의 조각 순서를 선택 MYSQL

SQL

그 조각하여 문자열의 조각 순서를 선택 MYSQL

나는 정보의 이런 종류의 필드가 "웹-1 / 1, 웹-2 / 2, 웹-3 / 3, 웹-4 / 4, 웹 / 5.". 다른 레지스터는 "웹-1 / 4, 웹 (2) / 제 웹-3 / 1 웹-4 / 2, 웹-5 / 3."와 같은 다른 값을 가질 수도

내가 선택하고 싶은 순서는 말 웹-2 /를 할 수 있습니다? 웹-2 / 1 마지막 번호로 웹-2와 순서를 포함하는 모든 필드에 웹-2 / 2, 웹-2 / 3 등이 될 것입니다

나는 특집 매물 스크립트 다른 웹 사이트를 만들고 기능 번호를 지정합니다. 다른 특성, 다른 웹 사이트 다른 순서

해결법

  1. ==============================

    1.난 당신이 MySQL의 문자열 함수보고 더 구체적으로 SUBSTRING_INDEX 기능 제안했다. 전 또는 슬래시 뒤의 숫자가 두 번째 부분은 다를 최초 및 / 또는 길이를 만들 수있는 하나의 숫자보다 더 많은 수 있기 때문에 내가 SUBSTRING 동안이 일을 제안하는 이유입니다.

    난 당신이 MySQL의 문자열 함수보고 더 구체적으로 SUBSTRING_INDEX 기능 제안했다. 전 또는 슬래시 뒤의 숫자가 두 번째 부분은 다를 최초 및 / 또는 길이를 만들 수있는 하나의 숫자보다 더 많은 수 있기 때문에 내가 SUBSTRING 동안이 일을 제안하는 이유입니다.

    예:

    SELECT   `info`,
             SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
             SUBSTRING_INDEX(`info`, '/', -1) AS `second_part`
    FROM     `table`
    ORDER BY `first_part` ASC,
             `second_part` ASC;
    

    결과:

    추가 예

    이 예제에서, 나는 그것이 같은 기호 나 문자 등의 추가 문자가 포함 된 경우를 대비 부호없는 정수로 두 번째 부분을 변환 할 CAST를 사용하고 있습니다. 즉, 두 번째 부분 "웹 15분의 4." "15"과의 두 번째 부분 일 것이다 "웹-4 / 15 ****"은 "15"이 될 것이다.

    SELECT   `info`,
              SUBSTRING_INDEX(`info`, '/', 1) AS `first_part`,
              CAST(SUBSTRING_INDEX(`info`, '/', -1) AS UNSIGNED) `second_part`
    FROM     `table`
    ORDER BY `first_part` ASC,
             `second_part` ASC;
    
  2. ==============================

    2.문자열이 항상 당신이 설명 된 패턴과 일치하는 경우, 우리는 당신이에 정렬 할 첫 번째 값이 문자열 (왼쪽에서 5 자)의 인덱스 위치 5라고 가정 할 수있다. 두 번째 문자는 문자열의 웹-2 / 1 '필드라는 이름의 필드에 있음을 가정하고, 마음에, 당신은 다음을 수행 할 수와 인덱스 7.이다 :

    문자열이 항상 당신이 설명 된 패턴과 일치하는 경우, 우리는 당신이에 정렬 할 첫 번째 값이 문자열 (왼쪽에서 5 자)의 인덱스 위치 5라고 가정 할 수있다. 두 번째 문자는 문자열의 웹-2 / 1 '필드라는 이름의 필드에 있음을 가정하고, 마음에, 당신은 다음을 수행 할 수와 인덱스 7.이다 :

    SELECT
      `field`
    FROM
      `table`
    ORDER BY
      substr(`field`, 5, 1) ASC,
      substr(`field`, 7, 1) ASC;
    

    SUBSTR () 함수는 첫 번째 옵션, 우리는 위에서 언급 한 인덱스 및 두 번째 옵션에서 시작 포함 할 수있는 문자의 수입니다 옵션 세 번째 매개 변수로 필드를 취할.

    문자열이 약간 꺼져있는 경우 중요한 것은이 subtr () 함수에서 두 번째 옵션 인, 필요에 따라이를 조정할 수 있습니다.

  3. ==============================

    3.그냥 추가 ... ORDER를 SUBSTRING에 의해 (사용자 이름, 2) ASC

    그냥 추가 ... ORDER를 SUBSTRING에 의해 (사용자 이름, 2) ASC

  4. ==============================

    4.나는이 작업을 수행 할 것

    나는이 작업을 수행 할 것

    SELECT info
    FROM table
    WHERE info LIKE 'web-2%'
    ORDER BY info ASC
    
  5. from https://stackoverflow.com/questions/6475936/mysql-select-a-piece-of-a-string-and-order-by-that-piece by cc-by-sa and MIT license