1. ホーム
  2. sql

[解決済み] SQL Serverで先頭のゼロをパディングして数字をフォーマットする

2022-06-01 22:08:09

質問

私たちは、SQL Server 2000 で 10 年近く使用された古い SQL テーブルを持っています。

その中で、私たちの従業員バッジの番号は、次のように格納されています。 char(6) から 000001 から 999999 .

私は今Webアプリケーションを書いているのですが、従業員のバッジ番号を保存する必要があります。

新しいテーブルでは、ショートカットで古いテーブルをコピーすることができましたが、単純に int の値を 1 から 999999 .

C#では、素早く書式設定できる int を使用してバッジ番号の値を素早くフォーマットすることができます。

public static string GetBadgeString(int badgeNum) {
  return string.Format("{0:000000}", badgeNum);
  // alternate
  // return string.Format("{0:d6}", badgeNum);
}

この単純なSQLクエリを修正して、返される値もフォーマットするにはどうしたらよいでしょうか。

SELECT EmployeeID
FROM dbo.RequestItems
WHERE ID=0

もし EmployeeID が 7135 の場合、このクエリは 007135 .

どのように解決するのですか?

6の数字を、必要な長さに変更してください。

SELECT REPLICATE('0',6-LEN(EmployeeId)) + EmployeeId

カラムがINTの場合、RTRIMを使用して暗黙のうちにVARCHARに変換することができます。

SELECT REPLICATE('0',6-LEN(RTRIM(EmployeeId))) + RTRIM(EmployeeId)

そして、これらの0を取り除き、「本当の」数を取り戻すためのコードです。

SELECT RIGHT(EmployeeId,(LEN(EmployeeId) - PATINDEX('%[^0]%',EmployeeId)) + 1)