8

これには省略形がありますか?
any または null に一致するワイルドカードはありますか?
もう1つは、0または1で一致すると言うことでした。

select [id], [word] from [FTSwordDef]
 where [word] like 'system_'
    or [word] like 'system'
4

3 に答える 3

6

はい、もっと短い方法がありますが、(すでにそうでない限り)クエリを仮に不可能にする可能性があります。

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 。

于 2013-02-24T23:27:29.553 に答える
1

恐ろしく非効率的で、私はAndriy's answerを好みますが、ワイルドカードを使用して長さを比較することもできます。

select [id], [word] from [FTSwordDef]
  where [word] like 'system%'
    and LEN([word]) <= LEN('system%')
于 2013-02-25T00:31:58.503 に答える
-3

いいえ。

http://msdn.microsoft.com/en-us/library/ms179859.aspx

パーセント記号が使用できない場合は、OR が必要です。これは句の余分な部分であるため、きれいではありませんが、最初に LIKE を使用すると、とにかく非効率になります。経験則として、パフォーマンスが懸念される場合は、可能であれば LIKE を避けてください。

于 2013-02-21T19:52:28.240 に答える