ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

SQL Serverの文字列処理 – 職員コードから先頭のアルファベット3文字分を判定して取り除く

leave a comment »

職員コードが6桁のコードでできているが、使われる記号が数字とアルファベットの混合であり、次の4つのパターンがあるとする。

(1)すべて数字でできてきている。 <例>123456
(2)アルファベット1文字と数字5桁でできている。 <例>A12345
(3)アルファベット2文字と数字4桁でできている。 <例>AB1234
(4)アルファベット3文字と数字3桁でできている。 <例>ABC123

このとき、「職員」テーブルにある「職員番号」フィールドについて、数字部分だけを取り出して昇順に並べたいとする。たとえばSQL Serverのビューでは「LIKE」演算子とパターン指定によって次のようにする。

———————————————————————-

SELECT  職員番号, CASE
                WHEN 職員番号 LIKE ‘[a-z][a-z][a-z]%’ THEN substring(職員番号, 4, 3) 
                WHEN 職員番号 LIKE ‘[a-z][a-z]%’ THEN substring(職員番号, 3, 4)
                WHEN 職員番号 LIKE ‘[a-z]%’ THEN substring(職員番号, 2, 5) 
                ELSE 職員番号
                    END AS 職員番号の数字部分, 職員姓名, 職員姓名ふりがな
FROM  dbo.職員

———————————————————————-

結果は次のとおり。

職員番号の数字部分_加工

<Fig.1 職員コードから先頭のアルファベット3文字分を判定して取り除いた例>

この例は、あくまでも文字列の先頭部分に連続してアルファベットが続く場合にコードを処理する例であるが、複数のデータを統合する際などにこのような文字列処理によるデータの加工が必要になる。コード体系が異なる場合、新しくコード体系を作り直す場合、いわゆる「名寄せ」が必要な場合、などだ。

システムの更新、統合には、実際にシステムを作る作業に匹敵するほど、データの整理に手間がかかる場合が少なくない。それは逆にいえば、いかに合理的で永続的なコード体系を作ることが重要であるか、ということも示している。

Written by Yoshio Matsumoto

2011年9月8日 @ 10:27 AM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。