これには省略形がありますか?
any または null に一致するワイルドカードはありますか?
もう1つは、0または1で一致すると言うことでした。
select [id], [word] from [FTSwordDef]
where [word] like 'system_'
or [word] like 'system'
これには省略形がありますか?
any または null に一致するワイルドカードはありますか?
もう1つは、0または1で一致すると言うことでした。
select [id], [word] from [FTSwordDef]
where [word] like 'system_'
or [word] like 'system'
はい、もっと短い方法がありますが、(すでにそうでない限り)クエリを仮に不可能にする可能性があります。
WHERE word + ' ' LIKE 'system_'
これは、左側の余分なスペースLIKE
が無視されるために機能しますが、余分でない場合、つまり右側の引数の長さの範囲内にある場合は、他の文字と同様にパターン文字列の照合に関与します。
したがって、たとえば、次のすべての結果は次のようになりますtrue
。
(1) 'system ' LIKE 'system_'
(2) 'systemA' LIKE 'system_'
(3) 'systemA ' LIKE 'system_'
(1)では、スペース_
はパターン文字列のと一致します。(2)では、にA
一致するもの_
です。で、スペースを無視している間(3)
もあります。A
これを説明するためのちょっとしたデモがあります:http ://sqlfiddle.com/#!3/d41d8/9521 。
恐ろしく非効率的で、私はAndriy's answerを好みますが、ワイルドカードを使用して長さを比較することもできます。
select [id], [word] from [FTSwordDef]
where [word] like 'system%'
and LEN([word]) <= LEN('system%')
いいえ。
http://msdn.microsoft.com/en-us/library/ms179859.aspx
パーセント記号が使用できない場合は、OR が必要です。これは句の余分な部分であるため、きれいではありませんが、最初に LIKE を使用すると、とにかく非効率になります。経験則として、パフォーマンスが懸念される場合は、可能であれば LIKE を避けてください。