2017-02-21 1 views
0

데이터베이스 테이블에 clnum 인 varchar 열이 있습니다. 숫자이지만 앞에 오는 0을 포함 할 수 있습니다. C# .Net 프로그램에서 숫자 X의 사용자 입력이 주어진다면 다음 번호가 테이블에 존재하지 않는 것을 판별하여 사용자에게 표시해야합니다. 이는 SQL 서버 2008입니다 내가 어떤 선행 0을 벗겨은 T-SQL 저장 프로 시저 결과 수를 통과하고,이 할 수 있습니다 수행 할 수 있습니다문자열을 사용한 T-SQL 간격

CREATE PROCEDURE [dbo].[getNextClientNum] 

@ModelNumber AS int 
AS 

;WITH UsedNumbers (clnum, clname1) 

AS 

(
    SELECT clnum, clname1 
    FROM QueuedClientMatters 
), 

OrderedNumbers (clnum, clnum_int, clname1) 
AS 
(
    SELECT TOP 500000 clnum, CAST(clnum AS int) AS clnum_int, clname1 
    FROM UsedNumbers 
    WHERE CAST(clnum AS int) > @ModelNumber 
    ORDER BY clnum 
) 

SELECT TOP 1 previd 
FROM (SELECT clnum_int, LAG(clnum_int) OVER (ORDER BY clnum) previd 
FROM OrderedNumbers) q 
WHERE previd <> clnum_int - 1 
ORDER BY clnum_int 

그때 그렇게 previd 다시 앞에 0을 추가 내 C# 프로그램에서 길이가 6 (모든 clnum은 항상 6 자리)입니다. 하지만 앞에 오는 0을 제거하고 다시 추가하는 방법이 있습니까?

+0

계산 된 열을 테이블에 추가하여 'clnum'의 정수 값을 제공한다고 생각하십니까? 그것은 지속되고 색인 될 수 있습니다. – HABO

+0

테이블은 우리 회계 시스템의 일부이며, 그렇게 할 수 없습니다. 그렇지 않으면 좋은 생각이 될 것입니다. 감사합니다. – Melanie

답변

1

int로 변환하기 전에 선행 0을 제거 할 필요가 없습니다. 이는 변환 중에 자동으로 발생합니다. SQL을 사용하여

, 당신은 쉽게 이후 유일한 대안은 당신이 0을 느슨하게하지 않도록 문자열로 테이블의 값을 저장하는 것입니다 REPLACE(STR(FieldName,6),' ','0')

사용하여 다시 추가 할 수 있습니다.

+0

감사합니다. T-SQL에서 제로를 다시 추가하지는 않았습니다. 너는 나에게 약간의 코딩을 저장했다. – Melanie