2015年9月11日金曜日

全角の濁点

今回ははまりました。

全角で「ゴ」などの濁る音は、1文字ですが、半角だど「コ」と「゛」の2文字です。
(ここでは、すべて全角で書いています。見づらいので、以下「゛」を「濁」とします。)

ところが、全角なのに「コ」と「濁」との2文字で入力してあるものが混じっていました。
多分これは昔に半角で入力してあったものを、関数等で全角に無理やり移植した残骸だと思います。

この文字列から、「濁」だけを除去したい、というか、
数字が混在している文字列から数字だけを抜き出す処理を作っていたので、「濁」も普通に除去できていると思っていましたが、「濁」が混じると、除去できてませんでした。

Select @aaa = Replace('123コ濁ウ','濁','')
普通に書いたこれでは除去できないいんです。

前から1文字ずつ取得して、文字列の長さ回数分ループで回して、
0~9以外が来れば除去するという処理を書いても除去できません。
('123コ濁ウ'をループさせた結果は「123コ濁」が返りました。)
この「濁」を照合するためには照合順序を変更しなければなりません。

Select @aaa = Replace('123コ゛ウ','濁','' COLLATE JAPANESE_BIN)

「COLLATE JAPANESE_BIN」でバイナリーで照合をしてくれるので、除去できます。

因みに指定しない場合(デフォルト)は
「Japanese_CI_AS」
です。
これは、大文字小文字、かな、全角半角を区別しないという意味です。

0 件のコメント:

コメントを投稿