10桁のISBNを13桁に変換するSQL(MYSQL)

チェックデジットの計算
プロシージャを使いたくなかったので作成

頭が978限定

【M_BOOK】テーブルの
【ISBN10】カラムに10桁のISBNデータが入っているとして

-----------------------------------------------------------
SELECT
CONCAT(
'978'
,SUBSTRING(`ISBN10`,1,9)
,CASE 10 - MOD(17+SUBSTRING(`ISBN10`,2,1)+SUBSTRING(`ISBN10`,4,1)+SUBSTRING(`ISBN10`,6,1)+SUBSTRING(`ISBN10`,8,1)+(3*(7+SUBSTRING(`ISBN10`,1,1)+SUBSTRING(`ISBN10`,3,1) +SUBSTRING(`ISBN10`,5,1) +SUBSTRING(`ISBN10`,7,1) +SUBSTRING(`ISBN10`,9,1))),10)
WHEN 10 THEN 0
ELSE 10 - MOD(17+SUBSTRING(`ISBN10`,2,1)+SUBSTRING(`ISBN10`,4,1)+SUBSTRING(`ISBN10`,6,1)+SUBSTRING(`ISBN10`,8,1)+(3*(7+SUBSTRING(`ISBN10`,1,1)+SUBSTRING(`ISBN10`,3,1) +SUBSTRING(`ISBN10`,5,1) +SUBSTRING(`ISBN10`,7,1) +SUBSTRING(`ISBN10`,9,1))),10)
END
) ISBN13
FROM `M_BOOK`
-----------------------------------------------------------

"10桁のISBNを13桁に変換するSQL(MYSQL)" へのコメントを書く

お名前
メールアドレス
ホームページアドレス
コメント