Size: a a a

2020 June 03

AM

Aleksey Maslov in Tarantool
Так естественно тоже не подходит:
box.execute([[select * from SERVICES_SPACE WHERE TYPE IN (?)]], {0, 1})

т.к. получается, что параметров больше,но это и логично
источник

EL

Eugene Leonovich in Tarantool
попробуйте
([[select * from SERVICES_SPACE WHERE TYPE IN (...)]], {0, 1})
источник

EL

Eugene Leonovich in Tarantool
хотя нет, так не должно работать
источник

EL

Eugene Leonovich in Tarantool
вам нужно динамически формировать sql подставляя нужное количество ?
источник

AM

Aleksey Maslov in Tarantool
Eugene Leonovich
попробуйте
([[select * from SERVICES_SPACE WHERE TYPE IN (...)]], {0, 1})
да не сработало
источник

AM

Aleksey Maslov in Tarantool
Eugene Leonovich
вам нужно динамически формировать sql подставляя нужное количество ?
все верно, динамически формирую sql
источник

AM

Aleksey Maslov in Tarantool
т.е. пока пытаюсь сделать только на одном условии, их будет больше
источник

AK

Alexey Kuzin in Tarantool
Aleksey Maslov
подскажите пожалуйста как составить такой запрос:
box.execute([[select * from SERVICES_SPACE WHERE TYPE IN (?)]], {0})

так работает

Если параметров больше - пишет ошибку:
box.execute([[select * from SERVICES_SPACE WHERE TYPE IN (?)]], {{0, 1}})
null
- Illegal parameters, SQL bind named parameter should be a table with one key - {name
 = value}


Выполняю в консоле
А почему во втором случае вложенная таблица?
источник

AM

Aleksey Maslov in Tarantool
потому что если делать не вложенной то количество аргументов будет больше знаков вопроса
источник

AK

Alexey Kuzin in Tarantool
Ну так оно и получается)
источник

AM

Aleksey Maslov in Tarantool
ну и ругаться будет, что число аргументов превышает ожидаемые
источник

AK

Alexey Kuzin in Tarantool
Что если вот так попробовать {{0}, {1}} ?
источник

AM

Aleksey Maslov in Tarantool
unix/:/var/run/tarantool/tarantool.sock> box.execute([[select * from SERVICES_SPACE WHERE TYPE in(?)]], {{0}, {1}})
---
- null
- Parameter '1' was not found in the statement
источник

AM

Aleksey Maslov in Tarantool
box.execute([[select * from SERVICES_SPACE WHERE TYPE in(?)]], {0})
так естественно работает
источник

R

R-omk in Tarantool
Aleksey Maslov
unix/:/var/run/tarantool/tarantool.sock> box.execute([[select * from SERVICES_SPACE WHERE TYPE in(?)]], {{0}, {1}})
---
- null
- Parameter '1' was not found in the statement
много скобочек , мало вопросов
источник

AM

Aleksey Maslov in Tarantool
R-omk
много скобочек , мало вопросов
В in 1 параметр нужен
источник

R

R-omk in Tarantool
аргументы все должны быть через запятую,  им пофигу куда они в запросе попадут
источник

AM

Aleksey Maslov in Tarantool
ок, так работает:
box.execute([[select * from SERVICES_SPACE WHERE TYPE in(?,?)]], {0, 2})

Но это же не правильно?
источник

R

R-omk in Tarantool
ну только так и должно работать, а че еще надо то?
источник

EL

Eugene Leonovich in Tarantool
чет я не припомню sql баз данных, которые бы разворачивали список в IN(...)
источник