문제

소화기가 포함 된 Firebird 2.0 테이블에 Varchar 필드가 있습니다. 이 필드에서 데이터를 정렬하고 숫자 만 포함하는 모든 값을 숫자로 정렬하고 다른 모든 값을 0으로 정렬해야합니다.

예를 들어, 네 값이있는 경우

"1", "2", "10", "string", 

나는 그것을 정렬해야한다

"string", "1", "2", "10". 

문자열 정렬이있는 기본 정렬

"1", "10", "2", "string".

나는 값을 정수에 캐스팅 할 생각을하고 있었지만 문자열에 대한 변환 오류가 발생합니다. 물론 맞습니다. 이 문제를 해결하는 방법?

도움이 되었습니까?

해결책

내장 기능 LPAD를 사용할 수 있습니다.

SELECT
  ...
  <number_field>,
  ...
FROM
  ...
ORDER BY
  LPAD(<numer_field>, 10)

다른 팁

애플리케이션을 사용하여 정렬 가능한 값을 저장하는 추가 열을 만듭니다. 그런 다음 해당 열을 기준으로 정렬하십시오. 숫자가 끝나기를 원한다면 숫자 앞에 "ZZZ"(또는 "üüü"또는 언어의 마지막 문자)를 삽입하십시오. 유사 형식 ( "zzz%012d", my_num);

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top