SAP Съюз HANA и всички съюзи: OperaПримери за тор

⚡ Умно обобщение

SAP ХАНА Operator извършва изчисления, сравняване на стойности или присвояване в SQL. Съществуват шест семейства оператори: унарни и двоични, аритметични, низови, оператори за сравнение, логически и оператори за множества, като UNION и INTERSECT.

  • Унарни и двоични: Унарният оператор приема един операнд, а бинарният оператор приема два.
  • 🧮 аритметика: Събиране, подчиненоtracОперациите умножение и деление работят с числови операнди.
  • 🔗 Конкатенация на низове: Две вертикални черти свързват низове, изрази или константи в една стойност.
  • Сравнение: „Равно“, „по-голямо“, „по-малко“ и техните комбинации връщат истинностна стойност за филтриране.
  • 🔀 Логично: И, ИЛИ и НЕ комбинират условия в клауза WHERE.
  • 🧩 комплект Operaторове: UNION премахва дубликатите, UNION ALL ги запазва, INTERSECT връща общи редове, EXCEPT subtracTS.
  • 📊 Разработен пример: Две таблици, споделящи стойности, демонстрират различния изход на всеки оператор за задаване.

SAP Оператори на HANA UNION и UNION ALL

SAP ХАНА Operator може да се използва за изчисляване, сравнение на стойности или за присвояване на стойност.

SAP ХАНА Operaтори

  • Унарни и двоични OperaTor
  • аритметика OperaTor
  • Низ Operaтори
  • сравнение OperaTor
  • логичен OperaTor
  • комплект OperaTor

Всеки оператор връща стойност, поради което те могат да бъдат вложени един в друг. Редът, в който се оценяват, се определя от приоритета, обяснен след отделните семейства.

Унарни и двоични OperaTor

OperaTor OperaАЦИ Descriptйон
Унар Унарен оператор се прилага към един операнд Унарен оператор плюс (+) Унарен оператор отрицание (-) Логическо отрицание (NOT)
Двоен Двоичен файл Operator се прилага върху два операнда Умножителни оператори ( *, / ) Адитивни оператори ( +,- ) Оператори за сравнение ( =, !=, <,>, <=,>= ) Логически оператори ( AND, OR )

аритметика OperaTor

  • Добавяне (+)
  • Подtracция (-)
  • Умножение ( * )
  • Разделяне (/)

Низ OperaTor

Низ Operator е оператор за конкатенация, който комбинира два елемента като низове, изрази или константи в един.

Две вертикални черти „||“ се използва като оператор за конкатенация.

сравнение OperaTor

Операторът за сравнение се използва за сравняване на два операнда. По-долу е даден списък със сравнение Operaтор-

  • Равно на ( = )
  • По-голямо от (>)
  • Less отколкото ( < )
  • По-голямо или равно на ( >= )
  • Less отколкото или равно на ( <= )
  • Не е равно (!= , <> )

логичен OperaTor

В критериите за търсене се използва логически оператор.

Например WHERE условие1 И / ИЛИ / НЕ условие2

По-долу е даден списък с логически оператори –

  • И – (напр. КЪДЕТО условие1 И условие2)
    Ако и Условие1, И Условие2 са верни, тогава условието за комбиниране е вярно, в противен случай ще бъде невярно.
  • ИЛИ – (напр. КЪДЕТО условие1 ИЛИ условие2)
    Ако Условие1 ИЛИ Условие2 е вярно, тогава комбинираното условие е вярно или невярно, ако и двете условия са неверни.
  • НЕ – (напр. КЪДЕТО НЕ е условие)
    Условието НЕ е вярно, ако условието е невярно.

комплект Operaтори

  • UNION – Комбинира два или много SELECT оператора или заявки без дублиране.
  • UNION ALL – Комбинира два или много SELECT оператора или заявка, включително всички дублиращи се редове.
  • INSERSECT – Комбинира два или много SELECT оператора или заявка и връща всички общи редове.
  • EXCEPT – Взема резултата от първата заявка и премахва реда, избран от втората заявка.

Напр Имам две таблици (table1, table2), в които някои стойности са общи.

комплект Operaторове в SAP ХАНА

Използваме оператор Set (Union, Union ALL, Intersect, с изключение) за тези две таблици SQL както по-долу –

Създайте Table1- SQL скрипт

CREATE COLUMN TABLE DHK_SCHEMA.TABLE1
( ELEMENT CHAR(1),
  PRIMARY KEY (ELEMENT)
);
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('P');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('Q');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('R');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('S');
INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('T');

Създайте Table2- SQL скрипт

CREATE COLUMN TABLE DHK_SCHEMA.TABLE2
( ELEMENT CHAR(1),
  PRIMARY KEY (ELEMENT)
);
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('S');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('T');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('U');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('V');
INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('W');

Забележка: Тук „DHK_SCHEMA“ е име на схема, в което потребителят може да промени името на схемата SQL съответно.

комплект Operator Примерите са както по-долу

OperaTor SQL заявка Продукция Можете да използвате
СЪЮЗ МАРКИРАЙ *
ОТ
(
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE1
СЪЮЗ
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE2
)
ПОДРЕДЕНИ ПО ЕЛЕМЕНТ;

Изход на оператора UNION set

Комбинирайте резултат от две или повече заявки без дублиране.
СЪЮЗ ВСИЧКИ МАРКИРАЙ *
ОТ
(
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE1
СЪЮЗ ВСИЧКИ
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE2
)
ПОДРЕДЕНИ ПО ЕЛЕМЕНТ;

UNION ALL зададе изхода на оператора

Комбинирайте резултата от две или повече заявки с всички дублирани.
ПРЕКРЕСТИ МАРКИРАЙ *
ОТ
(
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE1
ПРЕКРЕСТИ
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE2
)
ПОДРЕДЕНИ ПО ЕЛЕМЕНТ;

INTERSECT зададен изход на оператор

Комбинирайте резултата от две или повече заявки с всички общи редове.
С ИЗКЛЮЧЕНИЕ МАРКИРАЙ *
ОТ
(
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE1
С ИЗКЛЮЧЕНИЕ
МАРКИРАЙ ЕЛЕМЕНТ
ОТ DHK_SCHEMA.TABLE2
)
ПОДРЕДЕНИ ПО ЕЛЕМЕНТ;

EXCEPT set изход на оператора

Взима изход от първата заявка и премахва ред, избран от втората заявка

комплект OperaПравила и изисквания на Tor

Операторите за множества изглеждат прости, но лесно отхвърлят заявки, защото сравняват цели набори от резултати, а не отделни стойности. Те се управляват от четири правила.

  1. Броят на колоните трябва да съвпада. И двата SELECT оператора трябва да върнат един и същ брой колони. Несъответствието води до незабавна грешка и съобщението посочва позицията, а не колоната.
  2. Типовете данни трябва да са съвместими. Първата колона от първата заявка се съпоставя с първата колона от втората и така нататък по позиция, а не по име. Съвместимите числови типове се конвертират автоматично; колона със символи спрямо дата не се конвертира.
  3. Имената на колоните идват от първата заявка. Каквото и да извика вторият оператор колоните си, то се игнорира в изхода, което изненадва всеки, който чете резултата от UNION за първи път.
  4. ORDER BY се прилага за целия резултат. Той е в края, след последния SELECT, и е причината, поради която горните примери обгръщат обединението във външен SELECT.

Струва си да се отбележи разликата в производителността между UNION и UNION ALL. UNION трябва да сортира или хешира комбинирания резултат, за да премахне дубликатите, докато UNION ALL просто добавя. Където дубликатите са невъзможни или приемливи, UNION ALL е значително по-бърз при големи таблици. Дефинициите на колоните, използвани в тези таблици, са разгледани в SAP Типове данни HANA.

OperaПредимство на tor в SAP HANA SQL

Когато в един израз се появят няколко оператора, приоритетът решава кой се оценява първи. Грешката в това изискване води до заявка, която се изпълнява перфектно и връща грешни редове, което е много по-опасно от синтактична грешка.

Поръчка Operaтори категория
1 () Скоби, винаги се оценяват първо
2 + – (единичен операнд) Унарен плюс и отрицание
3 * / Умножение и деление
4 + – || Събиране, подчиненоtracция, конкатенация
5 = != < > <= >= сравнение
6 НЕ Логическо отрицание
7 И Логическа връзка
8 OR Логическа дизюнкция

Класическият капан се намира на редове 7 и 8. Тъй като И се свързва по-силно от ИЛИ, условието КЪДЕТО регион = „ИЗТОК“ ИЛИ регион = „ЗАПАД“ И статус = „ОТВОРЕНО“ се чете като ИЗТОК, или пък ЗАПАД, който е отворенВсеки източен ред се връща, независимо от статуса. Добавянето на скоби около двата теста на региона го поправя.

💡 Съвет: Ограждайте всяко смесено условие „И“ и „ИЛИ“, дори когато приоритетът вече дава желания резултат. Заявката става самодокументираща се и оцелява след по-късни редакции от друг разработчик.

Синтаксисът на ежедневните оператори е разгледан в SAP HANA SQL урок и по-широката платформа в SAP Урок за HANA серия.

Въпроси и Отговори

UNION ALL. Просто добавя резултатите, докато UNION трябва допълнително да премахва дубликати. Използвайте UNION ALL, когато дубликатите са невъзможни или приемливи в изхода.

Да, SAP HANA преобразува числото имплицитно. Wrapping Включването му в TO_VARCHAR все още е по-добра практика, защото форматът остава под ваш контрол, а не по подразбиране от сесията.

Да. Изкуственият интелект преформулира смесено условие И и ИЛИ на разбираем език, което веднага разкрива дали групатаping съответства на намерението, след което предлага скоби, които го поправят.

Да. INTERSECT и EXCEPT често се пренаписват като вътрешно съединение или клауза NOT EXISTS, което може да се представи по-добре. Сравнете плановете за изпълнение, преди да приемете пренаписването.

Сравняването на каквото и да е с NULL връща неизвестно, а не истина или лъжа, така че редът се филтрира. Използвайте IS NULL и IS NOT NULL вместо оператора за равно.

Обобщете тази публикация с: