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

SQLServerのchar列とnchar列の検索方法が異なります

    LIKE(Transact-SQL) のドキュメントから :

    次の表で問題を再現しました:

    DECLARE @t TABLE(x NCHAR(25));
    INSERT @t SELECT N'nanaS';
    SELECT x FROM @t WHERE x LIKE N'%S';
    

    結果:

    (0 row(s) affected)
    

    ただし、NVARCHARを使用する場合 代わりに、この問題は発生しません:

    DECLARE @t TABLE(x NVARCHAR(25));
    INSERT @t SELECT N'nanaS';
    SELECT x FROM @t WHERE x LIKE N'%S';
    

    結果:

    x
    -----
    nanaS
    

    ただし、NVARCHARに変換しても、元のテーブルでは目的の結果が得られませんでした。 WHERE 条項:

    DECLARE @t TABLE(x NCHAR(25));
    INSERT @t SELECT N'nanaS';
    SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';
    

    結果:

    (0 row(s) affected)
    

    したがって、1つの潜在的な回避策は、最初に適切なデータ型を使用することです(また、常にUnicode文字列のプレフィックスをN'properly' 。データ型を正しくできない場合は、RTRIM()を使用できます。 Aushinによって投稿された回避策ですが、HLGEMのコメントも念頭に置いてください。



    1. VBAの既存のオブジェクトですでに使用されている名前

    2. どのmysqlパーティショニングモデルをいつ使用するか

    3. MySQLが存在しない場合は列を追加

    4. 不要なWoocommerce画像メタを削除する