Изменить MySQL запрос на Oracle - PullRequest
0 голосов
/ 17 сентября 2018

У меня ниже приведен SQL-запрос, работающий на сервере базы данных MySQL, но рабочий сервер вместо этого работает на базе данных Oracle. Было бы слишком долго, если бы кто-то мог помочь с преобразованием этого запроса для работы в БД Oracle:

SELECT LAS_NAME as lastName, 
       OTHER_NAMES as firstName, 
       NUBAN as accountNumber, 
       FLG as account_status, 
       CUS_EMAIL as emailAddress,  
       CUS_MOBILE as phoneNumber 
FROM " . TABLE_NAME . " 
WHERE `OTHER_NAMES` LIKE ? AND 
      (CUS_EMAIL = ? OR 
       CUS_MOBILE = ?)

Примечание: этот запрос отлично работает на MySQL, но когда я пытался на БД Oracle, продолжает возвращать ошибку.

Ответы [ 4 ]

0 голосов
/ 17 сентября 2018
  • Попробуйте выполнить эти шаги в соответствии с именами таблиц и столбцов, которые вы получите, ответив на шаге 3
  • ШАГ 1:

    ВЫБЕРИТЕ las_name AS фамилия,other_names AS имя, nuban AS номер счета, flg AS account_status, cus_email AS адрес электронной почты,
    cus_mobile AS номер телефона FROM имя_таблицы
    ГДЕ other_names LIKE '%?%';

    • ШАГ 2:

    SELECT las_name AS фамилия, other_names AS имя, nuban AS accountnumber, flg AS account_status, cus_email AS адрес электронной почты,
    cus_mobile AS номер телефона FROM имя_таблицы
    ГДЕ другие_имя LIKE '%?%' AND (cus)= '?');

    • ШАГ 3:

    ВЫБРАТЬ фамилию las_name AS, other_names AS имя, nuban AS accountnumber, flg AS account_status, адрес электронной почты AS cus_email AS,
    cus_mobile AS: номер телефона FROM table_name
    ГДЕ другие имена НРАВИТСЯ '%?%' AND (cus_email = '?' ИЛИ ​​cus_mobile = '?');

0 голосов
/ 17 сентября 2018

Предполагается, что вы передаете table_name и, как показано ниже, у меня работает

SELECT LAS_NAME as lastName, 
       OTHER_NAMES as firstName, 
       NUBAN as accountNumber, 
       FLG as account_status, 
       CUS_EMAIL as emailAddress,  
       CUS_MOBILE as phoneNumber 
FROM TABLE_NAME 
WHERE  OTHER_NAMES LIKE '%' AND 
      (CUS_EMAIL = '' OR 
       CUS_MOBILE = '')
0 голосов
/ 17 сентября 2018

Я не ожидаю MYSQL и не понимаю символическое значение " . TABLE_NAME . ", поэтому я просто предполагаю, что вы имеете в виду имя таблицы. В Oracle, если таблица отсутствует в другой схеме или удаленной базе данных, мы просто используем имя таблицы.

Аналогично, обратный символ `не является допустимым символом в Oracle.

SELECT LAS_NAME as lastName, 
       OTHER_NAMES as firstName, 
       NUBAN as accountNumber, 
       FLG as account_status, 
       CUS_EMAIL as emailAddress,  
       CUS_MOBILE as phoneNumber 
FROM your_table
WHERE OTHER_NAMES LIKE ? AND 
      (CUS_EMAIL = ? OR 
       CUS_MOBILE = ?)
0 голосов
/ 17 сентября 2018

Насколько я знаю, Oracle выглядит следующим образом:

SELECT LAST_NAME as lastName, 
       OTHER_NAMES as firstName, 
       NUBAN as accountNumber, 
       FLG as account_status, 
       CUS_EMAIL as emailAddress,  
       CUS_MOBILE as phoneNumber 
FROM TABLE_NAME 
WHERE OTHER_NAMES LIKE '?%?' AND 
      (CUS_EMAIL = '?' OR 
       CUS_MOBILE = '?');

Не забудьте завершить операторы PLSQL символом (точка с запятой) в конце.

Что касается похожих операторовНе забывайте использовать «одинарные кавычки», так как Oracle очень специфично относится к строкам.

В качестве имени таблицы не следует использовать кавычки, PLSQL может быть жестокой любовницей, если она этого хочет.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...