sql >> Databáze >  >> RDS >> Sqlserver

Jak najít nastavení ANSI_NULLS databáze v SQL Server (T-SQL)

SQL Server má ANSI_NULLS nastavení, které určuje, jak NULL hodnoty jsou vyhodnoceny při porovnání s jinou hodnotou s hodnotou Rovná se (= ) a Nerovná se (<> ) operátory porovnání.

I když je pravda, že ANSI_NULLS můžete změnit nastavení na úrovni relace (pomocí SET ANSI_NULLS ), každá databáze má také svůj vlastní ANSI_NULLS nastavení.

Můžete zkontrolovat svou databázi a zjistit, zda je ANSI_NULLS nastavení je ON nebo OFF .

Chcete-li to provést pomocí T-SQL, můžete použít sys.databases zobrazení katalogu nebo DATABASEPROPERTYEX() funkce.

sys.databases Zobrazit

Soubor sys.databases zobrazení katalogu obsahuje mnoho informací o každé databázi ve vaší instanci SQL Server.

Následující dotaz vrátí ANSI_NULLS nastavení pro Music databáze:

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

Výsledek:

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

V tomto případě ANSI_NULLS je ON pro tuto databázi.

Můžeme jej OFF takhle:

ALTER DATABASE Music
SET ANSI_NULLS OFF;

Můžete odstranit WHERE klauzule při použití sys.databases zobrazení katalogu pro vrácení dat pro všechny databáze. Takhle:

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

Tento pohled má také sloupec nazvaný is_ansi_null_default_on , která vrací ANSI_NULL_DEFAULT nastavení pro databázi.

ANSI_NULL_DEFAULT nastavení určuje výchozí hodnotu NULL nebo NOT NULL , sloupec nebo uživatelsky definovaný typ CLR, pro který není možnost null explicitně definována v CREATE TABLE nebo ALTER TABLE prohlášení.

Předchozí příklad bychom mohli upravit tak, aby zahrnoval tento sloupec:

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

DATABASEPROPERTYEX() Funkce

Dalším způsobem, jak zkontrolovat tato nastavení, je DATABASEPROPERTYEX() funkce.

Zde je návod, jak zkontrolovat ANSI_NULLS nastavení pro Music DB:

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

Výsledek:

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

Nyní je 0 pro OFF protože jsem to nastavil na OFF v předchozím příkladu.

Chcete-li zkontrolovat ANSI_NULL_DEFAULT nastavení, proveďte toto:

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

Výsledek:

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

  1. JSON_INSERT() vs JSON_SET() vs JSON_REPLACE() v SQLite

  2. Přehled nového DBaaS od MariaDB - SkySQL

  3. Funkce UPPER() v Oracle

  4. ERD notace v datovém modelování