2018.09.26 [ クロロフィル通信 | オフィスだより ]
数値 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
係数 |
4 |
3 |
2 |
7 |
6 |
5 |
4 |
3 |
2 |
|
数値×係数 |
4 |
6 |
6 |
28 |
30 | 30 |
28 | 24 | 18 |
CREATE FUNCTION [dbo].[func_modulus11weight2_7] ( @value int ) RETURNS smallint AS BEGIN declare @number nvarchar(20); -- 引数の数値は可変なのでREVERSE関数で反転させます。 set @number = reverse(@value); declare @i integer = 1; declare @v integer; declare @digit integer = 0; declare @weight integer = 2; -- -- 数値の各桁に、下の桁から2~7の係数を掛ける。7の次はまた2~7を掛ける。 -- while @i <= len(@number) begin set @v = substring(@number,@i,1); set @digit = @digit + (@v * @weight); if @weight = 7 set @weight = 2; else set @weight = @weight + 1; set @i = @i + 1; end -- -- 余りを 11 から引いたものがチェックデジットです。 -- ただし余りが [0] または [1] の場合はチェックデジットも [0] にします。 -- if @digit % 11 = 0 or @digit % 11 = 1 set @digit = 0; else set @digit = 11 - (@digit % 11); RETURN @digit; END |
前の記事を見る
このページのトラックバックURL:
https://www.toyotane.co.jp/p/trackback/001315
コメントは記事の投稿者が承認するまで表示されません。
前の記事を見る
コメント
この記事に対するコメントはまだありません。