2016-09-27 4 views
1

の真ん中に期間を持つレコードにキーワードのように使用する方法私は、レコードSQL Serverの - 値

​​

を下に持っているが、私は、クエリwhere FullName like '%Gd. Mahendra%'を行うにしようとしたとき、それがどんな結果を返しません。 。

なぜですか?

最初の行を返す必要がありますか?

+1

「Gd.」と「Mahendra」の間に2つのスペースがある可能性があります。 – Nebi

+0

期間は「LIKE」に影響しません。文字列には印刷できない文字がいくつかあるかもしれません(または 'Gd.と' Mahendra'の間の2つのスペース - 私は本当に絵ではわかりません)。 – Siyual

+0

あなたはこれの代わりにこれをやってみることができます: 'WHERE FullName LIKE '%Gd。%Mahendra%' ' – Siyual

答えて

1

どうやら問題は次のとおりです。

要求によって送信されていた値が実際のレコードとは異なります。
htmlは複数のスペースをレンダリングできる<pre>タグを使用していないためです。次に、ユーザーは、複数のスペースを持たないレンダリングされた値をコピーします。それが正しい結果を得ることができない理由です。

4

あなた比較罰金する必要があります:あなたは.が疑われる場合は

where FullName like '%Gd. Mahendra%' 

、あなたは単一文字のワイルドカードでそれを置き換えることができます。一般的には

where FullName like '%Gd_ Mahendra%' 

、この種の問題があります「見えない」文字や同じように見える文字(0や大文字のO、タブやスペース、2つのスペースなど)が原因です。これは特に、基本的なASCII文字を拡張する各国文字セットで発生することがあります。

ASCII()を使用して、文字のASCII値を確認できます。それはときどき何が起こっているのか把握するのに役立ちます。

+0

実際には、私はEFを使用しています。私はWhere(x => x.FullName.ToLower()。Contains(keywordString.ToLower()))を使用しますが、なんらかの理由で動作しません。それからSSMSでテストしようとしましたが、同じ結果が得られました。 @FatkhanFauzi。 –

+0

。 。 。 '%Gd%Mahendra%'の間の ''% ''を使用してください。 –

+0

私は知っている..しかし、EFには、シユアルなコメントとして働くエスケープ(チルダ〜) –

1

はこれを試してみてください:

WHERE FullName LIKE '%Gd.%Mahendra%' 
+0

によって引き起こされる問題がある。あなたはエンティティのフレームワークでそれを行う方法を知っていますか? 現在のところ、このWhere(x => x.FullName.ToLower()。Contains(keywordString.ToLower())を使用しています) –