S3 SELECTの Where like では絵文字を取得できない

S3 SELECTの Where like では絵文字を取得できない:


起こったこと

絵文字入りのCSVファイルに対し、S3 Selectでクエリを投げてみます。

アップロードしたCSV
v_name,oshimark 
周防パトラ,��❤️ 
蒼月エリ,���� 
島村シャルロット,♣️❄️ 
西園寺メアリ,���� 
堰代ミコ,���� 
SQL
select * from S3Object s where s.v_name = '周防パトラ' -- -> 周防パトラ,��❤️ 
select * from S3Object s where s.v_name like '%パ%' -- -> 周防パトラ,��❤️ 
select * from S3Object s where s.oshimark = '��❤️' -- -> 周防パトラ,��❤️ 
select * from S3Object s where s.oshimark like '%❤️%' -- -> 周防パトラ,��❤️ 
select * from S3Object s where s.oshimark like '%��%' -- -> 結果がありません 
ん?


サロゲートペア文字が原因(っぽい)

Where likeでうまく結果をとれた「❤️」は、UTF-16のコードポイント上で U+2764 と U+FE0F (異体字セレクタ) ️で構成された文字に対し、「��」は U+1F980 のサロゲートペア文字です。

同じくサロゲートペア文字である「��」「��」なども、Where likeで取得することができませんでした。

一方で、非サロゲートペア文字+異体字セレクタで構成された「♣️」などはちゃんとで取得できました。

AWS側のバグなのでしょうか・・・。


対策

絵文字がそのまま使えない以上、別のフォーマットで保存するほか無さそうです。

私の場合は、URLエンコードをかけた形式で保存することで対応しました。

v_name,oshimark 
周防パトラ,%F0%9F%A6%80%E2%9D%A4%EF%B8%8F 
蒼月エリ,%F0%9F%A5%80%F0%9F%92%8E 
島村シャルロット,%E2%99%A3%EF%B8%8F%E2%9D%84%EF%B8%8F 
西園寺メアリ,%F0%9F%8D%BC%F0%9F%94%AE 
堰代ミコ,%F0%9F%94%B1%F0%9F%8D%8F 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)