Perl相当于(Postgre)SQL BETWEEN运算符?

时间:2009-11-06 21:40:45

标签: perl

有这样的事吗?相当于a <= expr <= b,或者在SQL术语expr BETWEEN a AND b中,expr仅评估一次?或者只是要求getting silly

5 个答案:

答案 0 :(得分:19)

在Perl中有很多种方法可以做到这一点。

if( $a < $x and $x < $b ){ ... }
... if $a < $x and $x < $b;
use 5.10.1;
if( $x ~~ [$a..$b] ){ ... }

given( $x ){
  when( [$a..$b] ){ ... }
}
use 5.11.0; # development branch
given( $x ){
  ... when [$a..$b];
}

答案 1 :(得分:5)

您可以使用Range operator + smart macthing

if($expr ~~ [$a..$b])

答案 2 :(得分:2)

在Perl6中,比较运算符是可链接的。

http://perlcabal.org/syn/S03.html#Chained_comparisons

  

Perl 6支持比较运算符的自然扩展,允许多个操作数:

if 1 < $a < 100 { say "Good, you picked a number *between* 1 and 100." }
if 3 < $roll <= 6              { print "High roll" }
if 1 <= $roll1 == $roll2 <= 6  { print "Doubles!" }

在Perl 5中,它们不是。

答案 3 :(得分:1)

我认为它们并不完全一致,但请查看Range Operators

答案 4 :(得分:0)

我认为这是你唯一的选择。

$x = expr;

if ($a < $x && $x < $b) {
  # stuff
}