2

データベースから小切手番号を取得するクエリがあります。戻り値は常に正確に 9 文字である必要があります。ほとんどのチェック番号は 6 文字しかないため、文字列の先頭に 0 を追加して、常に正確に 9 文字になるようにします。チェック番号は長さが異なる可能性があるため、チェック番号ごとに異なる数の 0 になります。これを行う最も効率的な方法は何ですか?

4

1 に答える 1

0

常に 6 ~ 9 桁の場合、最も簡単な (そしておそらく最良の) 方法は CASE を使用することです。

SELECT CASE WHEN LEN(CHECK_NUM)= 6 THEN '000' WHEN LEN(CHECK_NUM) = 7 THEN '00' 
       WHEN 
       LEN(CHECK_NUM) = 8 THEN '0' ELSE '' END + CHECK_NUM 
FROM   TABLE 

EDIT
元の値が数値 ( int) の場合は、次のようにしてみてください。

SELECT CASE WHEN LEN(CHECK_NUM)= 6 THEN '000' WHEN LEN(CHECK_NUM) = 7 THEN '00' 
       WHEN 
       LEN(CHECK_NUM) = 8 THEN '0' ELSE '' END + CAST(CHECK_NUM AS VARCHAR(9)) 
FROM   TABLE1 

このSQL Fiddleを見てください。

于 2013-09-04T13:50:03.497 に答える