1

Тема: SQL-селекти з вибірковими значеннями

БД - H2.
Є таблиця User:

CREATE TABLE user
(
    id   INT AUTO_INCREMENT,
    name VARCHAR(250) NOT NULL,
    age  INT          NOT NULL,
    PRIMARY KEY (id)
);

Коли роблю такий запит: SELECT * FROM user WHERE name = ?1
то отримую такий error: [42S22][42122] Column "LISA" not found; SQL statement: SELECT * FROM user WHERE name = Lisa [42122-200]
Підкажіть в чому проблема.

2

Re: SQL-селекти з вибірковими значеннями

= ?1  , що це за дивне значення параметру?

3

Re: SQL-селекти з вибірковими значеннями

Це коли треба вибрати значення по певному параметру, не захаркоджуючи саме значення (напр. name='Vasia'), а внести потрібне в процесі виконання селекту. Можна без  '1' просто 'name=?'.

4 Востаннє редагувалося fed_lviv (20.05.2020 19:50:37)

Re: SQL-селекти з вибірковими значеннями

BIgor написав:

Коли роблю такий запит: SELECT * FROM user WHERE name = ?1

Але ж, Ви, саме в такому вигляді його не відправляєте, тобто в певному місці коду йде заміна ось цього значення.

Тому, скоріш за все, даний варіант і сприймається, як назва стовпця:

BIgor написав:

SELECT * FROM user WHERE name = Lisa

Один з варіантів

5

Re: SQL-селекти з вибірковими значеннями

Яка СУБД? Швидше за все, fed_lviv правий, і заміна здійснюється до відправлення в базу. А вам треба порівнювати name не зі стовпчиком Lisa, а з рядком "Lisa". В лапках. Відповідно,

SELECT * FROM user WHERE name = "?1"

6

Re: SQL-селекти з вибірковими значеннями

Ймовірно мова йде про щось типу підготовлених виразів

$stmt = $pdo->prepare("INSERT INTO myTable (name, age) VALUES (?, ?)");
$stmt->execute([$_POST['name'], 29]);
Подякували: 221VOLT1

7

Re: SQL-селекти з вибірковими значеннями

koala написав:

Яка СУБД?

BIgor написав:

БД - H2

Щодо:

koala написав:

......name = "?1"

дуже сумніваюся (звісно, якщо це те, про що я думаю -> щось типу JPQL)
Тому, BIgor, рекомендую звернути увагу саме на те місце, де в коді даний параметр передається (а саме - як і в якому вигляді)

Подякували: koala1

8

Re: SQL-селекти з вибірковими значеннями

koala написав:
... name = "?1"

- так просто шукає значення в стовці, яке відповідає "?1"

fed_lviv написав:

... -> щось типу JPQL

- так JPQL

Для int, все працює ок, а для string, чомусь шукає не значення, а назву стовбця
Мабуть така особливість H2 database   *PARDON*

9

Re: SQL-селекти з вибірковими значеннями

BIgor написав:

Мабуть така особливість H2 database

:)  Ні...

Так покажіть код, JDBC URL, ...

10

Re: SQL-селекти з вибірковими значеннями

http://www.h2database.com/html/grammar.html#string
Дійсно, в цьому H2 лапки у стрічок мають бути одинарними. Спробуйте.

11 Востаннє редагувалося BIgor (21.05.2020 20:35:29)

Re: SQL-селекти з вибірковими значеннями

fed_lviv написав:

Так покажіть код, JDBC URL, ...

  - Та, для чого, можна ж респонс на селект напряму з бази отримати.
Тобто роблю прямий селект.

12

Re: SQL-селекти з вибірковими значеннями

koala написав:

Дійсно, в цьому H2 лапки у стрічок мають бути одинарними.

Я з одинарними пробував. На подвійні взагалі свариться  :)

13

Re: SQL-селекти з вибірковими значеннями

Ну тоді лишилося лише вангувати, що при з'єднанні має бути встановлено "enclose_string_ordinal_parameters_in_single_quite=true;" чи щось таке.

14 Востаннє редагувалося fed_lviv (21.05.2020 21:55:34)

Re: SQL-селекти з вибірковими значеннями

fed_lviv написав:

Так покажіть код, JDBC URL, ...

BIgor написав:

Та, для чого, можна ж респонс на селект напряму з бази отримати.

...  :)  Нууу, Ваша справа (варіантів може ж бути багато - використання браузера, міграції з файлика, код і тд). Не скажу що часто бавився з H2, але доводилося, ось таких проблем:

BIgor написав:

для string, чомусь шукає не значення, а назву стовбця

не помічав, хоча...

Подякували: leofun011