Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana SCHEMA_NAME() Bekerja di SQL Server

Di SQL Server, Anda dapat menggunakan SCHEMA_NAME() berfungsi untuk mengembalikan nama skema tertentu. Cara kerjanya adalah mengembalikan nama skema yang terkait dengan ID skema.

Jika Anda tidak meneruskan ID skema ke fungsi, itu akan mengembalikan nama skema default pemanggil.

Contoh 1 – Kembalikan Skema Default

Berikut adalah contoh yang mengembalikan nama skema default pemanggil.

SELECT SCHEMA_NAME() AS Result;

Hasil:

+----------+
| Result   |
|----------|
| dbo      |
+----------+

Ini mengembalikan nama skema default pemanggil karena saya tidak secara eksplisit menentukan ID skema lain.

Contoh 2 – Tentukan Skema yang Berbeda

Dalam contoh ini saya meneruskan ID skema ke fungsi.

SELECT SCHEMA_NAME(7) AS Result;

Hasil:

+----------+
| Result   |
|----------|
| Fact     |
+----------+

Contoh 3 – Berpindah Database

Contoh sebelumnya kebetulan dijalankan di database yang memiliki skema dengan ID 7. Jika saya beralih ke database yang berbeda, saya mungkin mendapatkan nama skema yang berbeda, atau tidak ada nama sama sekali.

Ini contoh yang saya maksud.

USE WideWorldImportersDW;
SELECT 
  SCHEMA_NAME(1) AS [1],
  SCHEMA_NAME(2) AS [2],
  SCHEMA_NAME(3) AS [3],
  SCHEMA_NAME(4) AS [4],
  SCHEMA_NAME(5) AS [5],
  SCHEMA_NAME(6) AS [6],
  SCHEMA_NAME(7) AS [7],
  SCHEMA_NAME(8) AS [8];

USE Music;
SELECT 
  SCHEMA_NAME(1) AS [1],
  SCHEMA_NAME(2) AS [2],
  SCHEMA_NAME(3) AS [3],
  SCHEMA_NAME(4) AS [4],
  SCHEMA_NAME(5) AS [5],
  SCHEMA_NAME(6) AS [6],
  SCHEMA_NAME(7) AS [7],
  SCHEMA_NAME(8) AS [8]; 

Hasil:

Changed database context to 'WideWorldImportersDW'.
+-----+-------+--------------------+-----+-------------+-----------+------+-------------+
| 1   | 2     | 3                  | 4   | 5           | 6         | 7    | 8           |
|-----+-------+--------------------+-----+-------------+-----------+------+-------------|
| dbo | guest | INFORMATION_SCHEMA | sys | Application | Dimension | Fact | Integration |
+-----+-------+--------------------+-----+-------------+-----------+------+-------------+
(1 row affected)
Changed database context to 'Music'.
+-----+-------+--------------------+-----+------+------+------+------+
| 1   | 2     | 3                  | 4   | 5    | 6    | 7    | 8    |
|-----+-------+--------------------+-----+------+------+------+------|
| dbo | guest | INFORMATION_SCHEMA | sys | NULL | NULL | NULL | NULL |
+-----+-------+--------------------+-----+------+------+------+------+
(1 row affected)

Empat kolom mengembalikan NULL di database Musik, karena tidak ada skema dengan ID tersebut.

Contoh 4 – Hasil Kueri yang Lebih Dapat Dibaca

Berikut ini contoh penggunaan SCHEMA_NAME() untuk menampilkan nama skema alih-alih ID-nya saat mengembalikan hasil dari tampilan sistem.

SELECT 
  schema_id,
  SCHEMA_NAME(schema_id) AS [Schema Name],
  name AS [Table Name]
FROM sys.tables;

Hasil:

+-------------+---------------+-------------------------+
| schema_id   | Schema Name   | Table Name              |
|-------------+---------------+-------------------------|
| 8           | Integration   | ETL Cutoff              |
| 8           | Integration   | Lineage                 |
| 8           | Integration   | Customer_Staging        |
| 8           | Integration   | Employee_Staging        |
| 8           | Integration   | Movement_Staging        |
| 8           | Integration   | Order_Staging           |
| 8           | Integration   | PaymentMethod_Staging   |
| 6           | Dimension     | City                    |
| 8           | Integration   | Purchase_Staging        |
| 6           | Dimension     | Customer                |
| 8           | Integration   | Sale_Staging            |
| 8           | Integration   | StockHolding_Staging    |
| 6           | Dimension     | Date                    |
| 8           | Integration   | StockItem_Staging       |
| 6           | Dimension     | Employee                |
| 8           | Integration   | Supplier_Staging        |
| 6           | Dimension     | Payment Method          |
| 8           | Integration   | Transaction_Staging     |
| 8           | Integration   | TransactionType_Staging |
| 6           | Dimension     | Stock Item              |
| 6           | Dimension     | Supplier                |
| 6           | Dimension     | Transaction Type        |
| 7           | Fact          | Movement                |
| 7           | Fact          | Order                   |
| 7           | Fact          | Purchase                |
| 7           | Fact          | Sale                    |
| 7           | Fact          | Stock Holding           |
| 7           | Fact          | Transaction             |
| 8           | Integration   | City_Staging            |
+-------------+---------------+-------------------------+

sys.tables tampilan sistem mengembalikan ID skema tetapi bukan namanya. Itu bukan masalah. ID cukup, karena kita bisa menggunakan SCHEMA_NAME() untuk menampilkan nama skema, berdasarkan ID tersebut.

Jika kami tidak memiliki SCHEMA_NAME() fungsinya, kita perlu melakukan join pada sys.schemas tampilan sistem hanya untuk mendapatkan nama skema.

Contoh 5 – Dalam Klausa WHERE

Berikut ini contoh penggunaan SCHEMA_NAME() dalam WHERE klausa.

USE WideWorldImportersDW;
SELECT * FROM sys.schemas
WHERE name = SCHEMA_NAME(7);

Hasil:

+--------+-------------+----------------+
| name   | schema_id   | principal_id   |
|--------+-------------+----------------|
| Fact   | 7           | 1              |
+--------+-------------+----------------+

Jika Anda perlu mendapatkan ID skema, gunakan SCHEMA_ID() fungsi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Solusi untuk INSERT ATAU UPDATE di SQL Server

  2. Apakah MS SQL Server antara menyertakan batas jangkauan?

  3. Cara Menjatuhkan Properti Identitas dari Kolom di Tabel SQL Server - Tutorial SQL Server / T-SQL 44

  4. SQL - Konversi tipe data varchar ke tipe data datetime menghasilkan nilai di luar rentang

  5. Cara Menginstal SQL Server