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`
-----------------------------------------------------------

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

ナイス

この記事へのコメント

この記事へのトラックバック

  • エアマックス 95

    Excerpt: 10桁のISBNを13桁に変換するSQL(MYSQL) 備忘録/ウェブリブログ Weblog: エアマックス 95 racked: 2013-07-10 05:14