파이어 버드는 문자열이 모든 숫자인지 결정합니다
문제
소화기가 포함 된 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);
제휴하지 않습니다 StackOverflow