SQl vyhľadávanie

SQL operátory

Toto je úplný zoznam operátorov podporovaných v geodatabáze (personálnej aj SDE), shapefile, coverage, a iných. Okrem nižšie uvedených operátorov, personálne a ArcSDE geodatabázy podporujú aj ďalšie funkcie. Na internete nájde množstvo GIS príkladov na vytváranie SQL dotazov s využitím operátorov.

Poznámka: aplikácia nemusí podporovať všetky funkcie a operátory

Operátory

Funkcie

Tvorba dotazov

Operátory

Toto je úplný zoznam operátorov pre dotazy, ktoré podporujú súborové geodatabázy, shapefile, coverage, a iné databázy. Sú podporované aj personálne aj SDE geodatabázy, aj keď sú tieto dátové zdroje môžu vyžadovať odlišnú syntax alebo názov funkcie. Okrem nižšie uvedených funkcií, personálne a SDE geodatabázy podporujú aj ďalšie funkcie.

Aritmetické operátory

Môžete použiť aritmetický operátor sčítanie, odčítanie, násobenie a delenie číselných hodnôt.

Operátor Popis
* Aritmetický operátor pre násobenie
/ Aritmetický operátor pre delenie
+ Aritmetický operátor pre ščítanie
- Aritmetický operátor pre odčítanie

Porovnávacie operátory

Môžete použiť porovnávacie operátory na porovnanie jedného dotazu s iným.

Operátor Popis
< Operátor môže byť použitý s reťazcami (porovnanie na základe abecedného poradia), čísel a dát.
<= Operátor môže byť použitý s reťazcami (porovnanie na základe abecedného poradia), čísel a dát.
<> Operátor môže byť použitý s reťazcami (porovnanie na základe abecedného poradia), čísel a dát.
> Operátor môže byť použitý s reťazcami (porovnanie na základe abecedného poradia), čísel a dát.
=> Operátor môže byť použitý s reťazcami (porovnanie na základe abecedného poradia), čísel a dát.

Napríklad, tento dotaz vyberie všetky mestá s názvami začínajúce písmenami M do Z:

CITY_NAME" >= 'M'

[NOT] BETWEEN x AND y Vyberie záznam, ak je hodnota väčšia ako alebo rovná hodnote X a menšia alebo rovná Y.

Napríklad, tento dotaz vyberie všetky záznamy s hodnotou väčšou alebo rovnou 1 a menšou alebo rovnajúcou sa 10:

"OBJECTID" BETWEEN 1 AND 10

Dotaz sa dá napísať aj takto:

"OBJECTID" >= 1 AND OBJECTID <= 10

[NOT] EXISTS Vráti hodnotu TRUE, ak poddotaz vráti aspoň jeden záznam; inak dotaz vráti FALSE.

Napríklad, tento dotaz vráti TRUE, ak OBJECTID obsahuje hodnotu 50:

EXISTS (SELECT * FROM parcels WHERE "OBJECTID" = 50)

Operátor EXISTS je podporovaný pre personálnu, súborovú aj SDE geodatabázu.

[NOT] IN Vyberie záznam, ak má jeden z niekoľkých reťazcov alebo hodnôt v poli.

Napríklad, tento dotaz hľadá štyri rôzne názvy štátov:

"STATE_NAME" IN ('Alabama', 'Alaska', 'California', 'Florida')

V personálnej, súborovej a SDE geodatabáze, sa tento operátor môže použiť aj na poddotaz:

"STATE_NAME" IN (SELECT "STATE_NAME" FROM states WHERE "POP" > 5000000).

IS [NOT] NULL Vyberie záznam, ak má hodnotu null pre určené pole. Ak je prameter NULL nastavený na NOT, vyberie záznam, ktorý obsahuje nejakú hodnotu.

Napríklad, tento dotaz vyberie všetky záznamy s hodnotou null pre obyvateľstvo:

"POPULATION" IS NULL

x [NOT] LIKE y [ESCAPE 'escape-character'] Pomocou operátora LIKE (miesto = operátor) spolu so zástupnými znakmi sa čiastočne nahradí hľadaný reťazec.

Napríklad, tento dotaz vyberie Mississippi a Missouri s názvov štátov:

"STATE_NAME" LIKE 'Miss%'

Symbol percenta (%) nahradí v dotaze ľubovolný počet znakov. Prípadne, ak chcete hľadať so zástupným znakom, ktorý reprezentuje jeden znak, použitie a podčiarkovník (_). Napríklad, tento dotaz nájde Catherine Smith a Katherine Smith:

"OWNER_NAME" LIKE '_atherine Smith'

Symbol percenta a podčiarkovník môžeme použiť pre súborovú dátbázu alebo viacužívateľskú geodatabázu. LIKE pracuje so znakmi na oboch stranách dotazu. Ak potrebujete prístup k neznakovým dátam, použite funkciu CAST. Napríklad, tento dotaz vráti čísla, ktoré začínajú 8 z poľa integer SCORE_INT:

CAST ("SCORE_INT" AS VARCHAR) LIKE '8%'

Ak chcete zahrnúť skutočný symbol percent a podčiarkovník na hľadaný reťazec, použite ESCAPE. Napríklad tento dotaz vracia ľubovoľný reťazec obsahujúci 10%, napríklad 10% ZĽAVA alebo ± 10%:

"AMOUNT" LIKE '%10$%%' ESCAPE '$'

Medzi zástupné znaky patrí aj hviezdička (*) pre ľubovoľný počet znakov a otáznik (?) pre jeden znak. Krížik (#) je tiež používaný ako zástupný znak pre nájdenie jedného čísla (číselná hodnota). Napríklad, tento dotaz vráti čísla parciel A1, A2, a tak ďalej, z personálnej geodatabázy:

[PARCEL_NUMBER] LIKE 'A#'

Logické operátory

Operátor Popis
AND Kombinuje dve podmienky dohromady a vyberie záznam, ak sú splnené obe podmienky.

Napríklad nasledujúci dotaz vyberie akýkoľvek dom s viac ako 1 500 m2 a garáž pre viac ako dve autá:

"AREA" > 1500 AND "GARAGE" > 2

OR Kombinuje dve podmienky dohromady a vyberie záznam, ak je splnená aspoň jedna podmienka.

Napríklad nasledujúci dotaz vyberie akýkoľvek dom s viac ako 1 500 m2 a garáž pre viac ako dve autá:

"AREA" > 1500 OR "GARAGE" > 2

NOT Vyberie záznam, ktorý nezodpovedá dotazu.

Napríklad nasledujúci dotaz vyberie všetky štáty okrem Californie:

NOT "STATE_NAME" = 'California'

Funkcie

Toto je úplný zoznam funkcií, ktoré podporujú súborové geodatabázy, shapefile, coverage, a iné databázy. Sú podporované aj personálne aj SDE geodatabázy, aj keď sú tieto dátové zdroje môžu vyžadovať odlišnú syntax alebo názov funkcie. Okrem nižšie uvedených funkcií, personálne a SDE geodatabázy podporujú aj ďalšie funkcie.

Časové a dátumové funkcie

Funkcia Popis
CURRENT_DATE Vráti aktuálny dátum
EXTRACT(extract_field FROM extract_source) Vráti extract_field z extract_source. Extract_source argument je dátum, čas dotaz. Extract_field argument môže byť jeden z nasledujúcich kľúčových slov: rok, mesiac, deň, hodina, minúta alebo sekunda
CURRENT TIME Vráti aktuálny čas

Textové funkcie

Argumenty označované ako asstring_exp môžu byť názov stĺpca, znak, reťazec-doslovný, alebo výsledok inej skalárnej funkcie, kde môže byť základný dátový typ reprezentovaný ako typ znaku.

Argumenty označené ako ascharacter_exp sú premenné dĺžky reťazca znakov.

Argumenty označené ako asstart alebo lenght môžu byť číselné alebo výsledok inej skalárne funkcie, kde môže byť základný dátový typ reprezentovaný ako číselný typ.

Tieto textové funkcie sú založené na 1; to znamená, že prvý znak v reťazci je znak 1.

Funkcia Popis
CHAR_LENGTH(string_exp) Vráti dĺžku reťazca
CONCAT(string_exp1, string_exp2) Vráti reťazec znakov, ktorý je výsledkom spojenia string_exp2 a string_exp1
LOWER(string_exp) Vráti reťazec, ktorý je rovný string_exp a všetky veľké znaky zmení na malé
POSITION(character_exp IN character_exp) Vracia pozíciu prvého znaku dotazu. Výsledkom je presné číslo.
SUBSTRING(string_exp FROM start FOR length) Vráti reťazec znakov, ktorý je odvodený od string_exp, začínajúceho na pozícii znaku určeného začiatkom a dĺžkou reťazca
TRIM(BOTH | LEADING | TRAILING trim_character FROM string_exp) Vráti reťazec string_exp odstránený reťazcom trim_characterzo začiatku alebo konca reťazca
UPPER(string_exp) Vráti reťazec, ktorý je rovný string_exp a všetky malé znaky zmení na veľké

Číselné funkcie

Všetky číselné funkcie vracajú číselné hodnoty.

Argumenty označené ako numeric_exp alebo integer_exp možu byť mená stĺpcov alebo výsledok iných skalárnych funkcií alebo čísle, kde môže byť základný dátový typ reprezentovaný ako číselný typ.

Funkcia Popis
ABS(numeric_exp) Vráti absolútne číslo numeric_exp
ACOS(float_exp) Vráti arccos float_exp ako uhol v radiánoch
ASIN(float_exp) Vráti arcsin float_exp ako uhol v radiánoch
ATAN(float_exp) Vráti arctangent float_exp ako uhol v radiánoch
CEILING(numeric_exp) Vráti najmenšie celé číslo, väčšie alebo rovnajúce sa numeric_exp
COS(float_exp) Vráti kosínus float_exp ako uhol v radiánoch
FLOOR(numeric_exp) Vráti najväčšie celé číslo, menšie alebo rovnajúce sa numeric_exp
LOG(float_exp) Vráti absolútne číslo numeric_exp
LOG10(float_exp) Vráti logaritmus float_exp
MOD(integer_exp1, integer_exp2) Vráti zvyšok integer_exp1 po delení integer_exp2
POWER(numeric_exp, integer_exp) Vráti hodnotu numeric_exp ako s váhou integer_exp
ROUND(numeric_exp, integer_exp) Vráti hodnotu numeric_exp zaokrúhlenú na integer_exp miesto napravo od desatinnej čiarky.
Ak hodnotainteger_exp je negatívna, numeric_exp sa zaokrúhli integer_exp na miesto vľavo od desatinnej čiarky.

CAST funkcie

Funkcia CAST prevedie hodnotu na zadaný dátový typ. Syntax je nasledujúca:

CAST(exp AS data_type)

Argument exp môže byť názov stĺpca, výsledok inej skalárne funkcie, alebo doslovný. Data_type môže byť niektorý z nasledujúcich kľúčových slov, ktoré môžu byť uvedené veľkými alebo malými písmenami: CHAR, VARCHAR, INTEGER, SMALLINT, REAL, DOUBLE, dátum, čas DATETIME, NUMERIC, alebo desatinných miest.