の真ん中に期間を持つレコードにキーワードのように使用する方法私は、レコードSQL Serverの - 値
を下に持っているが、私は、クエリwhere FullName like '%Gd. Mahendra%'
を行うにしようとしたとき、それがどんな結果を返しません。 。
なぜですか?
最初の行を返す必要がありますか?
の真ん中に期間を持つレコードにキーワードのように使用する方法私は、レコードSQL Serverの - 値
を下に持っているが、私は、クエリwhere FullName like '%Gd. Mahendra%'
を行うにしようとしたとき、それがどんな結果を返しません。 。
なぜですか?
最初の行を返す必要がありますか?
どうやら問題は次のとおりです。
要求によって送信されていた値が実際のレコードとは異なります。
htmlは複数のスペースをレンダリングできる<pre>
タグを使用していないためです。次に、ユーザーは、複数のスペースを持たないレンダリングされた値をコピーします。それが正しい結果を得ることができない理由です。
あなた比較は罰金する必要があります:あなたは.
が疑われる場合は
where FullName like '%Gd. Mahendra%'
、あなたは単一文字のワイルドカードでそれを置き換えることができます。一般的には
where FullName like '%Gd_ Mahendra%'
、この種の問題があります「見えない」文字や同じように見える文字(0や大文字のO、タブやスペース、2つのスペースなど)が原因です。これは特に、基本的なASCII文字を拡張する各国文字セットで発生することがあります。
ASCII()
を使用して、文字のASCII値を確認できます。それはときどき何が起こっているのか把握するのに役立ちます。
実際には、私はEFを使用しています。私はWhere(x => x.FullName.ToLower()。Contains(keywordString.ToLower()))を使用しますが、なんらかの理由で動作しません。それからSSMSでテストしようとしましたが、同じ結果が得られました。 @FatkhanFauzi。 –
。 。 。 '%Gd%Mahendra%'の間の ''% ''を使用してください。 –
私は知っている..しかし、EFには、シユアルなコメントとして働くエスケープ(チルダ〜) –
はこれを試してみてください:
WHERE FullName LIKE '%Gd.%Mahendra%'
によって引き起こされる問題がある。あなたはエンティティのフレームワークでそれを行う方法を知っていますか? 現在のところ、このWhere(x => x.FullName.ToLower()。Contains(keywordString.ToLower())を使用しています) –
「Gd.」と「Mahendra」の間に2つのスペースがある可能性があります。 – Nebi
期間は「LIKE」に影響しません。文字列には印刷できない文字がいくつかあるかもしれません(または 'Gd.と' Mahendra'の間の2つのスペース - 私は本当に絵ではわかりません)。 – Siyual
あなたはこれの代わりにこれをやってみることができます: 'WHERE FullName LIKE '%Gd。%Mahendra%' ' – Siyual