määrittää SQL-92-yhteensopivan käyttäytymisen Tasaveroisille (=) ja ei ole yhtä suuri kuin (<>) vertailuoperaattoreille, kun käytetään null-arvoja.
syntaksi
SET ANSI_NULLS {ON / OFF}
Remarks
SQL-92-standardi edellyttää, että yhtä suuri (=) tai ei yhtä suuri kuin (<>) vertailu nollan arvoon arvioi epätosi. Kun asetettu ANSI_NULLS on päällä, valitse lauseke, jossa sarakkeen_name = NULL palauttaa nolla riviä, vaikka sarakkeessa_nimi olisi nolla. Valitse lauseke, jossa sarakkeen_nimi < > nolla palauttaa nolla riviä, vaikka sarakkeen_nimi arvoja ei olisikaan.
kun joukko ANSI_NULLS on pois päältä, yhtä suuri ( = ) eikä yhtä suuri kuin (<>) vertailuoperaattorit eivät noudata SQL-92-standardia. SELECT-lauseke, jossa sarakkeen_nimi = NULL palauttaa rivit, joissa sarakkeen_nimi arvo on nolla. SELECT statement käyttäen missä sarakkeen_nimi <> NULL palauttaa rivit, joilla ei ole sarakkeen arvoja. Lisäksi SELECT-lauseke, jossa SARAKKEEN_NIMI <> XYZ_value palauttaa kaikki rivit, jotka eivät ole XYZ-arvoa ja jotka eivät ole nollia.
huomaa, tulkitseeko Microsoft® SQL Server™ tyhjän merkkijonon joko yhdeksi välilyönniksi tai niin, että todellista tyhjää merkkijonoa ohjataan sp_dbcmptlevel-yhteensopivuustason asetuksella. Jos yhteensopivuustaso on pienempi tai yhtä suuri kuin 65, SQL Server tulkitsee tyhjät merkkijonot yksittäisinä välilyönteinä. Jos yhteensopivuustaso on 70, SQL Server tulkitsee tyhjät merkkijonot tyhjiksi merkkijonoiksi. Lisätietoja on ohjeaiheessa sp_dbcmptlevel.
kun asetettu ANSI_NULLS ON päällä, kaikki nollaa vastaan tehdyt vertailut arvioidaan tuntemattomaan. Kun asetettu ANSI_NULLS on pois päältä, kaikkien tietojen vertailu nollaan arvoon, joka arvioidaan todeksi, jos tietoarvo on nolla. Jos sitä ei ole määritetty, sovelletaan nykyisen tietokannan ANSI nulls-valitsinta. Lisätietoja ANSI nulls-tietokantavaihtoehdosta on ohjeaiheessa Sp_dboption ja tietokannan asetukset.
Jotta skripti toimisi tarkoitetulla tavalla riippumatta ANSI nulls-tietokantavaihtoehdosta tai Asetuksista ANSI_NULLS, käyttö on NULL eikä ole NULL vertailuissa, jotka voivat sisältää null-arvoja.
tallennetuissa menettelyissä SQL Server käyttää SET ANSI_NULLS-asetusarvoa tallennetun menettelyn ensimmäisestä luontiajasta alkaen. Aina kun tallennettu menettely suoritetaan myöhemmin, asetettujen ANSI_NULLIEN asetus palautetaan alkuperäiseen arvoonsa ja tulee voimaan. Kun käytetään tallennetun menettelyn sisällä, asetettujen ANSI_NULLIEN asetusta ei muuteta.
aseta ANSI_NULLIT on-arvoksi hajautettujen kyselyiden suorittamista varten.
aseta ANSI_NULLIT on myös oltava päällä, kun luodaan tai manipuloidaan indeksejä lasketuilla sarakkeilla tai indeksoiduilla näkymillä. Jos SET ANSI_NULLS on pois päältä, luo, Päivitä, Lisää ja poista lausuntoja taulukoista, joissa indeksit on laskettu sarakkeisiin tai indeksoidut näkymät epäonnistuvat. SQL Server palauttaa virheen listaamalla kaikki ASETUSASETUKSET, jotka rikkovat vaadittuja arvoja. Lisäksi, kun suoritetaan SELECT statement, jos SET ANSI_NULLS on pois päältä, SQL Server ohittaa indeksiarvot lasketut sarakkeet tai näkymät ja ratkaista valitse ikään kuin ei olisi tällaisia indeksejä taulukoissa tai näkymissä.
Note ANSI_NULLS on yksi seitsemästä ASETUSVALINNASTA, jotka on asetettava vaadittuihin arvoihin, kun käsitellään laskettujen sarakkeiden indeksejä tai indeksoituja näkymiä. Valitsimet ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, QUOTED_IDENTIFIER ja CONCAT_NULL_YIELDS_NULL on myös asetettava päälle, kun taas NUMERIC_ROUNDABORT on asetettava pois.
SQL Server ODBC-ajuri ja Microsoft OLE DB-tarjoaja SQL Server-palvelimelle asettaa automaattisesti ANSI_NULLS-arvon päälle yhdistettäessä. Tämä asetus voidaan määrittää ODBC-tietolähteissä, ODBC-yhteysominaisuuksissa tai OLE DB-yhteysominaisuuksissa, jotka on asetettu sovelluksessa ennen SQL Server-yhteyden muodostamista. Aseta ANSI_NULLS-oletusarvot OFF-arvoksi DB-Kirjastosovellusten yhteyksille.
kun SET ANSI_DEFAULTS on päällä, SET ANSI_NULLS on käytössä.
asetettujen ANSI_NULLIEN asetus asetetaan suoritus – tai suoritusaikaan eikä jäsennysaikaan.
käyttöoikeudet
aseta ANSI_NULLIEN käyttöoikeudet oletus kaikille käyttäjille.
esimerkit
tässä esimerkissä käytetään yhtäläisiä ( = ) eikä yhtä (<>) vertailuoperaattoreita, jotka tekevät vertailuja taulukon NULL-ja nonnull-arvoihin. Tämä esimerkki osoittaa myös, että on NULL ei vaikuta asetettu ANSI_NULLS asetus.
Katso myös
= (yhtä suuri kuin)
IF…ELSE
<> (ei yhtä suuri kuin)
SET
SET ANSI_DEFAULTS
WHERE
WHILE
WHILE
WHILE