sql >> データベース >  >> RDS >> Mysql

MySQLからSQLServerへのテキスト内の絵文字のコピー

    文字🤘のUnicodeコードポイントは U +1F918 です。 、つまり、基本多言語面 の外側にあります。 (BMP)Unicodeで、U+FFFFまでのコードポイントをカバーします。

    BMPの外部でUnicode文字を処理するには、補足文字をサポートする照合 、* _SCという名前 :

    このSQLステートメントの結果を比較する

    select 
        nchar(unicode(N'🤘' collate Latin1_General_100_CI_AS_SC)) as EmojiSC, 
        unicode(N'🤘' collate Latin1_General_100_CI_AS_SC) as EmojiSCUnicode, 
        cast(N'🤘' as varbinary) as EmojiBinary, 
        cast(nchar(unicode(N'🤘')) as varbinary) as EmojiConvBinary,
        unicode(N'🤘') as EmojiUnicode
    

    Latin1_General_CI_ASを使用してデータベースに対して実行された場合

    EmojiSC EmojiSCUnicode  EmojiBinary EmojiConvBinary EmojiUnicode
    NULL    129304          0x3ED818DD  0x3ED8          55358
    

    Latin1_General_100_CI_AI_SCに設定されたデータベース

    EmojiSC EmojiSCUnicode  EmojiBinary EmojiConvBinary EmojiUnicode
    🤘      129304          0x3ED818DD  0x3ED818DD      129304
    

    🤘」が表示されるのはなぜですか 「?

    U + 1F918のUTF-8エンコーディングは、 0xF0 0x9F 0xA40x98<です。 / a> 、および文字は、これらのコードをANSI文字 として解釈した結果です。 。

    「�」が表示されるのはなぜですか?

    文字�はUnicode REPLACEMENTCHARACTER です。 そして

    これは、U+D83Eが有効なUnicodeコードポイントではないためです> 、ただし、UTF-16(0xD83E 0xDD18としてエンコードされたコードポイントの最初の単語 。

    表示されているものではなく、保存されているものを確認してください

    Unicodeデータの表示は難しい場合があり、内部で何が起こっているかを知る最も効率的な方法は、バイトを調べることです。 TSQLでは、cast(... as varbinary)を使用します Unicodeデータ操作がどこでうまくいかないかを分析します。



    1. パフォーマンスの神話:テーブル変数は常にメモリ内にあります

    2. mysqliとmysqlはデータベースコマンドに挿入します

    3. VBAを使用してテキストボックスに記述されたSQLを実行する

    4. SQL SELECTを使用して、最初のN個の正の整数を取得します