2014-09-17 2 views
0

내 클라이언트 중 하나의 SQL 데이터베이스에 대한 노드 js 서비스를 작성해야합니다. 표의 기본 키는 1,2, ..., 9, A, B, ..., Y, Z, 10,11, .... 19,1A, 1B ....sql에서 영숫자 키를 인식하고 어떻게 조작합니까?

이제 두 개의 기본 키가 있고 그 사이의 모든 행을 읽고 싶습니다. 작동하지 않습니다.

SELECT COUNT(*) FROM CustomerMaster WHERE CustomerID BETWEEN 0001G AND 0002B 

데이터베이스는 SQL Express에 있습니다. CustomerID는 CustomerMaster의 기본 키입니다. 독점적 인 Point of Sale 소프트웨어의 데이터베이스이므로 데이터베이스를 변경할 수 없습니다. 두 개의 기본 키 사이에서 행을 읽을 수있는 방법이 있습니까?

+0

"이것은 작동하지 않습니다."일반적으로별로 도움이되지 않습니다. 구문 오류가 발생하면서 추측하지 말고 알려주십시오. –

답변

1

기본 키는 문자열처럼 보입니다. 선두에 제로

SELECT COUNT(*) 
FROM CustomerMaster 
WHERE CustomerID BETWEEN '0001G' AND '0002B' 
+0

감사. 그건 잘 됐네. – rishiag

+0

@rishiag : 저를 놀라게합니다. 실제로 '1H'는 '1'로 시작하고 '0002B'는 0으로 시작하기 때문에 dbms는 '0002B'보다 큰 '1H'를 고려해야합니다. –

0

패드 사용자의 ID를 따라서 예를 들어 '0001G'에서 '1G'를 변환, 오른쪽 부분을 사용 : 문자열 상수는 작은 따옴표로 구분해야합니다. 그런 다음 비교해보십시오 :

SELECT COUNT(*) 
FROM CustomerMaster 
WHERE right('00000' + CustomerID, 5) BETWEEN '0001G' AND '0002B'; 
+0

앞에 오는 0으로 데이터를 채우는 것이 더 좋을 것입니다. 당신이하는 일은 용납 할 수 없으며 나쁜 성능을 초래할 것입니다. –

+0

@ t-clausen.dk : 사실입니다. 그렇지만 데이터베이스가 현재와 같은 방식으로 요청을 읽었습니다. (일부 시스템은 데이터를 쓰고 해당 ID를 생성 함) 변경할 수 없습니다. –

관련 문제