【環境】
SQL Server 2014
【目的】
ある顧客情報が格納されているテーブル(仮にCUSTOMER_INFOとします)から、使用された人名外字の回数をランキングで取得したいと思っています。
人名外字は、下記のような特定の文字コード領域に割り当てられています。
(例:0x8440~0x844F)
【テーブル構成(仮)】
必要カラムのみ抜き出して簡略化してますがだいたいこんな感じです。
[ORDER_NO] [char](13) NOT NULL, [FAMILY_NAME] [varchar](20) NULL, -- 姓 [FIRST_NAME] [varchar](20) NULL -- 名
【期待する結果(例)】
1 , 髙, 100
2 , 﨑, 99
3 , 邉, 80
…
10, 齋, 20
下記SQLで指定文字の出現数を数えることは出来ると思うのですが、この方法だと外字の個数分だけの行数を書くことになってしまい、あまりスマートではないと思っています。
SQL
1--例「あ」~「お」までの出現数を数える 2SELECT 3 SUM(LEN(FAMILY_NAME) - LEN(REPLACE(FAMILY_NAME, 'あ', ''))) 4 + SUM(LEN(FIRST_NAME) - LEN(REPLACE(FIRST_NAME, 'あ', ''))) AS 'あ', 5 SUM(LEN(FAMILY_NAME) - LEN(REPLACE(FAMILY_NAME, 'い', ''))) 6 + SUM(LEN(FIRST_NAME) - LEN(REPLACE(FIRST_NAME, 'い', '')))AS 'い', 7 SUM(LEN(FAMILY_NAME) - LEN(REPLACE(FAMILY_NAME, 'う', ''))) 8 + SUM(LEN(FIRST_NAME) - LEN(REPLACE(FIRST_NAME, 'う', ''))) AS 'う', 9 SUM(LEN(FAMILY_NAME) - LEN(REPLACE(FAMILY_NAME, 'え', ''))) 10 + SUM(LEN(FIRST_NAME) - LEN(REPLACE(FIRST_NAME, 'え', ''))) AS 'え', 11 SUM(LEN(FAMILY_NAME) - LEN(REPLACE(FAMILY_NAME, 'お', ''))) 12 + SUM(LEN(FIRST_NAME) - LEN(REPLACE(FIRST_NAME, 'お', ''))) AS 'お' 13FROM CUSTOMER_INFO
特定の文字コード領域を指定して出現回数をカウントするための、他のうまい方法があるようでしたら情報いただけるとありがたいです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/19 02:39
2016/02/19 06:19
2016/02/19 06:36
2016/02/19 07:04