sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan finder du en databases ANSI_NULLS-indstilling i SQL Server (T-SQL)

SQL Server har en ANSI_NULLS indstilling, der bestemmer hvordan NULL værdier evalueres sammenlignet med en anden værdi med Equals (= ) og Ikke lig med (<> ) sammenligningsoperatører.

Selvom det er rigtigt, at du kan ændre ANSI_NULLS indstilling på sessionsniveau (ved hjælp af SET ANSI_NULLS ), hver database har også sin egen ANSI_NULLS indstilling.

Du kan tjekke din database for at se, om dens ANSI_NULLS indstillingen er ON eller OFF .

For at gøre dette med T-SQL kan du enten bruge sys.databases katalogvisning eller DATABASEPROPERTYEX() funktion.

sys.databases Vis

sys.databases katalogvisningen indeholder en masse information om hver database i din SQL Server-instans.

Følgende forespørgsel returnerer ANSI_NULLS indstilling for Musik database:

SELECT is_ansi_nulls_on 
FROM sys.databases
WHERE name = 'Music';

Resultat:

+--------------------+
| is_ansi_nulls_on   |
|--------------------|
| 1                  |
+--------------------+

I dette tilfælde ANSI_NULLS er ON for denne database.

Vi kan slå det OFF sådan her:

ALTER DATABASE Music
SET ANSI_NULLS OFF;

Du kan fjerne WHERE klausul, når du bruger sys.databases katalogvisning for at returnere data for alle databaser. Sådan:

SELECT 
    name,
    is_ansi_nulls_on 
FROM sys.databases
ORDER BY name ASC;

Denne visning har også en kolonne kaldet is_ansi_null_default_on , som returnerer ANSI_NULL_DEFAULT indstilling for databasen.

ANSI_NULL_DEFAULT indstilling bestemmer standardværdien, NULL eller IKKE NULL , af en kolonne eller CLR brugerdefineret type, for hvilken nullabiliteten ikke er eksplicit defineret i CREATE TABLE eller ÆNDRINGSTABEL udsagn.

Vi kunne ændre det foregående eksempel til at inkludere denne kolonne:

SELECT
    name,
    is_ansi_nulls_on,
    is_ansi_null_default_on
FROM sys.databases
ORDER BY name ASC;

DATABASEPROPERTYEX() Funktion

En anden måde at kontrollere disse indstillinger på er med DATABASEPROPERTYEX() funktion.

Sådan kontrollerer du ANSI_NULLS indstilling for Musik DB:

SELECT DATABASEPROPERTYEX('Music','IsAnsiNullsEnabled');

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| 0                  |
+--------------------+

Det er nu 0 for OFF fordi jeg satte den til OFF i et tidligere eksempel.

For at kontrollere ANSI_NULL_DEFAULT indstilling skal du gøre dette:

SELECT DATABASEPROPERTYEX('Music','IsAnsiNullDefault');

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| 1                  |
+--------------------+

  1. MySQL konverterer datostreng til Unix tidsstempel

  2. Sådan formateres SQLite-forespørgselsresultater i TCL-tilstand

  3. Migrering af din adgangsdatabase til SQL Server

  4. Sådan opgraderes MariaDB 5.5 til MariaDB 10.1 på CentOS/RHEL 7 og Debian Systems