LibreOffice Base V5.3.2.2 — эквивалент Access IIF

Я новичок в Base и пытаюсь преобразовать простой запрос MS Access:

Box:IIF([Archive_Loc] like '**ox*','B')

Я использую casewhen("Archive_Loc" = '%ox%','B')

но я не могу понять, как, если я могу использовать LIKE вместо =, что, очевидно, не дает мне результата, который я получаю от возврата B, если Archive_Loc содержит фразу ox.

Любые советы будут оценены - спасибо


person user1737416    schedule 23.08.2017    source источник


Ответы (3)


Ответ на ваш вопрос зависит от конкретной версии SQL используемой базы данных. Другими словами, разные базы данных используют несколько разные синтаксисы SQL. Итак, первое, что нужно спросить вас, какую базу данных вы используете ???

Вот несколько вариантов: HSQLDB 1.8 — встроенная база данных по умолчанию. (Примечание: существует версия 2.3, но по умолчанию Base ее не использует.) Вы также можете выбрать Firebird. Что касается меня, то большую часть времени я предпочитаю подключаться к MariaDB (бесплатный движок базы данных MySQL), потому что у него есть другие ценные инструменты, такие как HeidiSQL и phpmyadmin.

Как только вы узнаете, какую базу данных вы используете, вот ссылка на список ссылок на различную документацию по базам данных, которую я составил некоторое время назад, когда впервые изучал Base: https://ask.libreoffice.org/en/question/80972/to-learn-libreoffice-base-are-there-introductions-or-tutorials/

Пожалуйста, прокрутите вниз до «ВАЖНАЯ ДОКУМЕНТАЦИЯ БАЗЫ ДАННЫХ».

И это не только должно помочь вам ответить на этот конкретный вопрос, но, мы надеемся, предоставит вам ценный ресурс для самостоятельного ответа на многие другие вопросы.

руководство по HSLQDB 1.8 полезно прочитать, хотя и сложно. чтобы найти ссылку на, и я предполагаю, что это, вероятно, используемая вами БД.

Надеюсь, это поможет вам.

person Elliptical view    schedule 24.08.2017
comment
Большое спасибо за эту информацию - я ценю время, которое вы потратили на ответ :-) - person user1737416; 25.08.2017

Кажется, у вас есть 2 вопроса:

  1. Справка по синтаксису IIF
  2. Как и в случае с функцией CASEWHEN().

Во-первых, у вас есть доступные операции SQL, но вы, похоже, выполняете текстовые функции.

Также у вас должен быть мастер Filter Navigator, который может помочь.

А1. синтаксис будет:

IF([boolean_field];"Yes";"No")

А2. Вроде синтаксис должен быть должен быть:

IF([Archive_Loc] like '%ox%','B') --will show something containing "ox" in it.

правило:

Для текста, написанного в кавычках (' '); "_" для переменного символа, "%" для произвольного количества переменных символов

Ссылка на загрузку с веб-сайта: http://www.libreoffice.org/get-help/documentation/

Вот сайт онлайн-справки для BASE: https://help.libreoffice.org/Common/Database_1

person Michael Edmison    schedule 23.08.2017

В конце концов я решил свою проблему, подключив базу к моей существующей базе данных mysql и настроив запросы для прямого запуска sql, чтобы он обошел парсер.

Работа выполнена :-)

person user1737416    schedule 25.08.2017