Salesforceで気を付けたい全角/半角の扱い

閲覧ありがとうございます。Armadaです。
今回はSalesforceネタです。

クライアントアプリからSalesfoceにデータを登録する際、キー重複を避けるために事前にSOQL(Salesforce独自のクエリ言語)でデータを抽出→重複キーの存在チェックという流れでアプリ側でチェックを行うわけですが、ここで全角/半角問題が出てきます。

どんな問題かというと、文字によってSOQLとデータ登録時では全角/半角の区別が異なるため、SOQLでは重複なしとなってもデータ登録時に重複ありでエラーとなるのです。

文字による全角/半角の扱いをまとめると以下のとおりです。

文字 SOQL 登録時
アルファベット 区別なし 区別なし
数字 区別なし 区別なし
カタカナ 区別あり 区別なし
記号
※文字により異なる
区別なし 区別なし

アルファベット、数字は全て同じで「区別なし」、カタカナはSOQLでは「区別あり」、登録時は「区別なし」となります。

記号は、というと文字によって異なります。
基本的には上記の表のとおりですが、一部の記号は区別ありだったり、なしだったり。
扱いが異なる記号について調査した結果は以下のとおりでした。

文字コード 記号 SOQL 登録時
0x22 区別あり 区別あり
0x27 区別なし 区別あり
0x5c \ 区別あり 区別あり
0x5e ^ 区別あり 区別なし
0x60 ` 区別なし 区別あり
0x7e ~ 区別あり 区別なし
0xa1 区別あり 区別なし
0xa2 区別あり 区別なし
0xa3 区別あり 区別なし
0xa4 区別あり 区別なし
0xa5 区別あり 区別なし
0xb0 区別あり 区別なし
0xde 区別あり 区別あり
0xdf 区別あり 区別なし

これらの記号やカタカナは基本的にキー項目の値としては利用しないため、登録時の入力チェックでエラーとするなど、登録しない仕組みを考えた方が良さそうです。
是非、参考にしてください。