Sqlite, где пункт «И» и «В»

Цель: Я пытаюсь выполнить массовое удаление в таблице sqlite вместо удаления каждых данных с помощью цикла for. Итак, я пытаюсь использовать "IN".

Случай: У меня есть два параметра при выполнении запроса. Первое type, второе order_id. Я хочу удалить данные, где type — это "order_book", а order_id — это ["B001", "B002", ...].

Что я пробовал, но не работает:

window.sqlitePlugin.openDatabase({ name: 'dbname.db', location: 'default' }).executeSql("DELETE FROM table_name WHERE type='order_book' AND order_id IN ('B001', 'B002')", [], (res) => { console.info(res.rows); });
// => this is not work

То, что я пробовал, работает, но отсутствует параметр типа:

window.sqlitePlugin.openDatabase({ name: 'dbname.db', location: 'default' }).executeSql("DELETE FROM table_name WHERE order_id IN ('B001', 'B002')", [], (res) => { console.info(res.rows); });
// => data with order_id B001 and B002 deleted

Итак, что здесь не так? Мне также нужно определить, что такое type, потому что разные type могут иметь одинаковые order_id (не спрашивайте, почему это происходит...)

Заранее благодарю за любую помощь!

Запрос выглядит нормально, поэтому я предполагаю, что это данные, которые хранятся в type. Обратите внимание, что сравнение SQLlite может быть чувствительным к регистру. Вы можете проверить сохраненные данные или сравнить строки следующим образом: WHERE type='order_book' COLLATE NOCASE

J.R. 28.03.2019 04:26

@Дж.Р. Вы имели в виду, что запрос должен быть таким? => window.sqlitePlugin.openDatabase({ name: 'dbname.db', location: 'default' }).executeSql("УДАЛИТЬ ИЗ table_name WHERE type='order_book' COLLATE NOCASE AND order_id IN ('B001', 'B002' )", [], (res) => { console.info(res.rows); });

Akza 28.03.2019 04:35

@Дж.Р. ну, это рабочий товарищ. Но я хочу знать, почему COLLATE NOCASE работает? Я имею в виду, я обнаружил, что sqlite чувствителен к регистру, но я на 100% уверен, что все данные в нижнем регистре. Итак, я думаю, что мне не нужно делать запрос нечувствительным к регистру.

Akza 28.03.2019 04:41

да. Вы также можете проверить, хранятся ли данные типа в смешанном или верхнем регистре и можете ли вы найти «order_book» в своей таблице.

J.R. 28.03.2019 04:41

@Дж.Р. а также, не могли бы вы помочь мне, как передать параметр внутри []? Я имею в виду, что я передаю параметр значения непосредственно в строке запроса, например type='order_book'. Что я думаю, чтобы сделать это так => window.sqlitePlugin.openDatabase({ имя: 'dbname.db', местоположение: 'по умолчанию' }). (?)", ['order_book', ['B001', 'B002'] ], (res) => { console.info(res.rows); }); но это не работает.

Akza 28.03.2019 05:21

Не уверен ... работает ли «B001, B002» (а не массив)?

J.R. 28.03.2019 05:32

@Дж.Р. idk, чего я хочу добиться, так это создать переменную, содержащую онлайн-запрос, и все параметры значения в запросе должны быть похожи на order_book =? и получить данные из другой функции. Итак, я мог бы попытаться манипулировать данными, чтобы работал один запрос. Но, Idk правильный запрос и формат параметра, который может получить запрос

Akza 28.03.2019 05:36

@Дж.Р. пожалуйста, ответьте на вопрос, упомянув, что COLLATE NOCASE. Я приму это как ответ. Потому что это на самом деле ответ на мой первоначальный вопрос. Спасибо

Akza 28.03.2019 14:30

Акза, спасибо, сделаю. Ранее я имел в виду передачу строки «B001, B002», а не массива; эта строка может быть в переменной. Я не уверен в этом, хотя, возможно, задам еще один вопрос.

J.R. 28.03.2019 19:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если данные хранятся в смешанном или верхнем регистре в столбце type, то сравнение с учетом регистра SQLite не найдет их. Вы можете проверить сохраненные данные или сравнить строки следующим образом:

WHERE type='order_book' COLLATE NOCASE ...

Другие вопросы по теме