#sql #oracle
#sql #Oracle
Вопрос:
я создаю соединение между двумя таблицами Product_Tree и Product для двух столбцов Model_Number и Manufacturer, чтобы вернуть соответствующие столбцы.
Вот 2 таблицы:
Таблица: Product_Tree
Col1,Col2,Model_Number,Col3,Manufacturer,Col4
111111,Pepsi,aaa,111111,aaa,description
222222,Miranda,bbb,222222,bbb,'description
333333,Cola,bbb,333333,bbb,description
Таблица: Продукт
Model_Number,Manufacturer
a,a
b,b
c,c
d,d
Вот запрос:
SELECT Product_Tree.col0,Product_Tree.col1,Product_Tree.col2,Product_Tree.col3,Product_Tree.Model_Number,Product_Tree.Manufacturer
FROM Product_Tree
JOIN Product ON Product.model_number LIKE ''''%''''Product_Tree.MODEL_NUMBER''''%''''
AND Product.manufacturer LIKE ''''%''Product_Tree.MANUFACTURER''''%'''';
Я получаю эту ошибку:
ORA-00911: invalid character
Комментарии:
1. Почему это помечено как
mysql
?2. Как это связано с «UNIX»?
Ответ №1:
Вам нужно будет использовать оператор конкатенации для объединения вашего %
подстановочного знака с вашим столбцом product_tree.manufacturer
:
SELECT Product_Tree.col0,Product_Tree.col1,Product_Tree.col2,Product_Tree.col3,Product_Tree.Model_Number,Product_Tree.Manufacturer
FROM Product_Tree
JOIN Product ON Product.model_number LIKE '%' || Product_Tree.MODEL_NUMBER || '%'
AND Product.manufacturer LIKE '%' || Product_Tree.MANUFACTURER || '%';
Я предполагаю, что этот запрос находится внутри скрипта и '
заключен в одинарные кавычки, поэтому здесь повсюду используются одинарные кавычки. Если это так, то ваш цитируемый оператор SQL будет:
SELECT Product_Tree.col0,Product_Tree.col1,Product_Tree.col2,Product_Tree.col3,Product_Tree.Model_Number,Product_Tree.Manufacturer
FROM Product_Tree
JOIN Product ON Product.model_number LIKE ''%'' || Product_Tree.MODEL_NUMBER || ''%''
AND Product.manufacturer LIKE ''%'' || Product_Tree.MANUFACTURER || ''%'';