2016-11-23 5 views
0

次のような状況に遭遇していますが、SQL Serverでは同じではない2つの値を比較しています。 1つはDBに格納されている値で、もう1つはフラットファイルからDBにインポートされた値です。SQL Serverの異なるエンコーディングと文字列を比較する方法

SELECT 
    CASE 
     WHEN 'Capital Markets - Americas' = 'Capital Markets – Americas' 
      THEN 1 
      ELSE 0 
    END 

0を返します。

君たちは私がエンコーディングを無視して比較することができますどのように助けることができますか?

+3

これを見ると、ハイフンは同じ文字コードではありません。文字列はascii 45で、他はasciiです。 –

+2

Bea 1つはWordまたはExcelで自動修正されて作成された可能性があります。私はエンコーディングがここで助けになるとは思わない。 – SMM

+0

それは私が考えていたことです。何の違いもないとは思わないでください。 –

答えて

1

いくつかのコメンターは、あなたがハイフン(ASCIIコード45)とEn dash文字(ASCIIコード150)を交換例えば(ハイフンを標準化する可能性が示唆したきたように:

DECLARE @Value1 VARCHAR(50) 
DECLARE @Value2 VARCHAR(50) 

SET @Value1 = 'Capital Markets - Americas' 
SET @Value2 = 'Capital Markets – Americas' 

SELECT CASE WHEN @Value1 = @Value2 
      THEN 1 
      ELSE 0 
     END AS OriginalComparison, 
     CASE WHEN REPLACE(@Value1,CHAR(150),CHAR(45)) = REPLACE(@Value2,CHAR(150),CHAR(45)) 
      THEN 1 
      ELSE 0 
     END AS NewComparison 

あなたの間で異なる他の文字を見つけることができます2つのデータソースを持ち、フィールドを囲むように余分な文字列を囲むだけでREPLACEを置き換えることができます(またはすべての墨塗りを行う関数を記述してください)。

関連する問題