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

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), в които някои стойности са общи.
Използваме оператор 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 ) ПОДРЕДЕНИ ПО ЕЛЕМЕНТ; |
Комбинирайте резултат от две или повече заявки без дублиране. | |
| СЪЮЗ ВСИЧКИ | МАРКИРАЙ * ОТ ( МАРКИРАЙ ЕЛЕМЕНТ ОТ DHK_SCHEMA.TABLE1 СЪЮЗ ВСИЧКИ МАРКИРАЙ ЕЛЕМЕНТ ОТ DHK_SCHEMA.TABLE2 ) ПОДРЕДЕНИ ПО ЕЛЕМЕНТ; |
Комбинирайте резултата от две или повече заявки с всички дублирани. | |
| ПРЕКРЕСТИ | МАРКИРАЙ * ОТ ( МАРКИРАЙ ЕЛЕМЕНТ ОТ DHK_SCHEMA.TABLE1 ПРЕКРЕСТИ МАРКИРАЙ ЕЛЕМЕНТ ОТ DHK_SCHEMA.TABLE2 ) ПОДРЕДЕНИ ПО ЕЛЕМЕНТ; |
Комбинирайте резултата от две или повече заявки с всички общи редове. | |
| С ИЗКЛЮЧЕНИЕ | МАРКИРАЙ * ОТ ( МАРКИРАЙ ЕЛЕМЕНТ ОТ DHK_SCHEMA.TABLE1 С ИЗКЛЮЧЕНИЕ МАРКИРАЙ ЕЛЕМЕНТ ОТ DHK_SCHEMA.TABLE2 ) ПОДРЕДЕНИ ПО ЕЛЕМЕНТ; |
Взима изход от първата заявка и премахва ред, избран от втората заявка |
комплект OperaПравила и изисквания на Tor
Операторите за множества изглеждат прости, но лесно отхвърлят заявки, защото сравняват цели набори от резултати, а не отделни стойности. Те се управляват от четири правила.
- Броят на колоните трябва да съвпада. И двата SELECT оператора трябва да върнат един и същ брой колони. Несъответствието води до незабавна грешка и съобщението посочва позицията, а не колоната.
- Типовете данни трябва да са съвместими. Първата колона от първата заявка се съпоставя с първата колона от втората и така нататък по позиция, а не по име. Съвместимите числови типове се конвертират автоматично; колона със символи спрямо дата не се конвертира.
- Имената на колоните идват от първата заявка. Каквото и да извика вторият оператор колоните си, то се игнорира в изхода, което изненадва всеки, който чете резултата от UNION за първи път.
- 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 серия.





