November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Tuesday, September 27th, 2005 04:13 pm
вот есть привычный оператор between, который обычно употребляется так:
... WHERE field BETWEEN expr1 AND expr2.

А если его употребить наоборот, например, WHERE expr BETWEEN field1 AND field2, то оно а) будет ли работать? б) везде? в) насколько совместимо с каким-нибудь стандартом языка?

Наводка: в MS SQL работает, я проверял.
Tuesday, September 27th, 2005 03:49 pm (UTC)
Соответствует стандарту SQL92. Любой правильный парсер SQL-я преобразует expr1 BETWEEN expr2 AND expr3 в (expr1 >= expr2) AND (expr1 <= expr3).
Tuesday, September 27th, 2005 03:55 pm (UTC)
Тогда уж должно быть примерно так:
expr1 BETWEEN expr2 AND expr3 в (expr1 >= min(expr2, expr3)) AND (expr1 <= max( expr2, expr3))
Tuesday, September 27th, 2005 07:31 pm (UTC)
Насколько я понимаю, в expr входит и field.

Короче, должно работать, но на самом деле не знаю.
Tuesday, September 27th, 2005 10:12 pm (UTC)
Насколько я помню SKL SQL, должно работать.
Замена filed->expr, по краней мере, смысла условия не изменяет, даже расширяя его -- но в таком расширенном виде должно работать. Значит, должно жить везде...
Wednesday, September 28th, 2005 08:13 am (UTC)
в оракле (10ка) не работает
там прямо в доках сказано
[NOT] BETWEEN x AND y
[Not] greater than or equal to x and less than or equal to y.