SUBSTR внутри a где с Zend DB v1

Я делаю запрос с Zend DB (v1), но я не могу найти способ включить оператор SUBSTR в запрос, потому что имеют несколько параметров.

Это то, чего я хочу достичь:

    SELECT *
    FROM myTable
    WHERE SUBSTR(myField, myVar1, myVar2) = 'xxx'

Мне нужно использовать стандартный формат Zend DB, но где, кажется, не принимает более одного параметра, в то время как мне нужно передать myField, myVar1, myVar2 в качестве переменных PHP ($myField, $myVar1, $myVar2). ‘xxx’ здесь не переменная, это фиксированное значение.

    $sql = $this->select()
        ->from(["t1" => "myTable"]])
        ->where( ... ); // Not sure how to implement this

Кто-нибудь знает, как этого достичь?

2 ответа

  1. Конечно, просто напишите!

     $sql = $this->select()
            ->from(["t1" => "myTable"]])
            ->where("SUBSTR(myField, myVar1, myVar2) = ?", 'XXX')
    
  2. После некоторых попыток и ошибок я нашел этот обходной путь, который, кажется, работает:

    $myFieldQuoted = $this->_db->quote($myField);
    $myVar1Quoted  = $this->_db->quote($myVar1);
    $myVar2Quoted  = $this->_db->quote($myVar2);
    
    $sql = $this->select()
        ->from(["t1" => "myTable"]])
        ->where("SUBSTR($myFieldQuoted, $myVar1Quoted, $myVar2Quoted) = 'xxx'");