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

Gunakan PARSENAME() untuk Mengembalikan Bagian dari Nama Objek di SQL Server

Di SQL Server, Anda dapat menggunakan PARSENAME() fungsi untuk mengembalikan bagian dari nama objek.

Misalnya, Anda dapat menggunakannya untuk mengembalikan bagian skema (atau bagian lain mana pun) dari empat nama bagian seperti server.schema.db.object .

Sintaks

Sintaksnya seperti ini:

PARSENAME ( 'object_name' , object_piece )

Dimana object_name adalah nama objek (memenuhi syarat opsional) dan object_piece adalah bagian yang ingin dikembalikan.

object_piece argumen harus berupa int antara 1 dan 4. Nilai menentukan bagian mana dari nama objek yang akan dikembalikan. Nilai-nilai ini sesuai dengan bagian objek sebagai berikut:

Nilai Bagian Objek 1 Nama objek 2 Nama skema 3 Nama basis data 4 Nama server

Contoh 1 – Penggunaan Dasar

Berikut ini contoh untuk didemonstrasikan.

SELECT PARSENAME('Homer.dbo.Music.Artists', 4) SEBAGAI Hasil;

Hasil:

+----------+| Hasil ||----------|| Homer |+----------+

Dalam hal ini saya mengembalikan nama server dari nama objek empat bagian yang terdiri dari nama server, skema, database, dan tabel.

Contoh 2 – Kembalikan Semua Bagian

Begini tampilannya jika saya mengembalikan semua bagian secara terpisah.

DECLARE @object_name char(23) ='Homer.dbo.Music.Artists';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME(@object_name , 2) SEBAGAI [Database], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+----------+----------+------------+----------+ | Server | Skema | Basis Data | Objek ||----------+----------+------------+----------|| Homer | dbo | Musik | Artis |+----------+----------+------------+----------+ 

Contoh 3 – SQL Server Tidak Memeriksa Nama

Penting untuk diketahui bahwa PARSENAME() tidak menunjukkan apakah suatu objek dengan nama yang ditentukan ada. Itu hanya mengembalikan bagian yang ditentukan dari nama objek yang diberikan.

Oleh karena itu, Anda dapat meneruskan nilai apa pun ke fungsi tersebut, asalkan itu nama sistem valid yang valid .

DECLARE @object_name char(28) ='completely.bogus.object.name';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME(@object_name , 2) SEBAGAI [Database], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+-------------+----------+------------+--------- -+| Server | Skema | Basis Data | Objek ||-------------+----------+------------+---------- || sepenuhnya | palsu | objek | nama |+------------+----------+------------+---------- +

Contoh 4 – Nama Objek Tiga Bagian

Inilah yang terjadi jika saya memberikan nama tiga bagian.

DECLARE @object_name char(17) ='dbo.Music.Artists';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME(@object_name, 2 ) SEBAGAI [Database], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+----------+----------+------------+----------+ | Server | Skema | Basis Data | Objek ||----------+----------+------------+----------|| NULL | dbo | Musik | Artis |+----------+----------+------------+----------+ 

Contoh 5 – Nama Objek Dua Bagian

Inilah yang terjadi jika saya memberikan nama dua bagian.

DECLARE @object_name char(13) ='Music.Artists';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME(@object_name, 2) AS [Database], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+----------+----------+------------+----------+ | Server | Skema | Basis Data | Objek ||----------+----------+------------+----------|| NULL | NULL | Musik | Artis |+----------+----------+------------+----------+ 

Contoh 6 – Nama Objek Satu Bagian

Dan, sekonyol kelihatannya, nama satu bagian.

DECLARE @object_name char(7) ='Artists';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME(@object_name, 2) AS [Database ], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+----------+----------+------------+----------+ | Server | Skema | Basis Data | Objek ||----------+----------+------------+----------|| NULL | NULL | NULL | Artis |+----------+----------+------------+----------+ 

Contoh 7 – Nama Objek Lima Bagian

Inilah yang terjadi jika Anda memberikan nama objek dengan lebih dari empat bagian.

DECLARE @object_name char(23) ='Ups.Homer.dbo.Music.Artists';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME( @object_name, 2) SEBAGAI [Database], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+----------+----------+------------+----------+ | Server | Skema | Basis Data | Objek ||----------+----------+------------+----------|| NULL | NULL | NULL | NULL |+----------+----------+------------+----------+ 

Contoh 8 – Kegunaan Lain

Mengingat Anda dapat memberikan nama objek yang sepenuhnya palsu, PARSENAME() bisa menjadi peretasan yang berguna untuk memisahkan data lain yang dibatasi, seperti alamat IP4.

DECLARE @object_name char(15) ='172.217.167.110';SELECT PARSENAME(@object_name, 4) AS [4], PARSENAME(@object_name, 3) AS [3], PARSENAME(@object_name, 2) AS [2], PARSENAME(@object_name, 1) AS [1];

Hasil:

+-----+-----+-----+-----+| 4 | 3 | 2 | 1 ||-----+-----+-----+-----|| 172 | 217 | 167 | 110 |+-----+-----+-----+-----+

Namun, jika Anda benar-benar perlu melakukannya, pertimbangkan untuk menggunakan metode lain, seperti STRING_SPLIT() .

Contoh 9 – Koma dan Pembatas Lainnya

Diberikan PARSENAME() dimaksudkan untuk digunakan dengan nama objek, Anda tidak dapat menggunakan koma sebagai pembatas dan mengharapkannya berfungsi sama.

Inilah yang terjadi jika saya mencoba melakukannya.

DECLARE @object_name char(23) ='Homer,dbo,Music,Artists';SELECT PARSENAME(@object_name, 4) AS [Server], PARSENAME(@object_name, 3) AS [Schema], PARSENAME(@object_name , 2) SEBAGAI [Database], PARSENAME(@object_name, 1) SEBAGAI [Objek];

Hasil:

+----------+----------+------------+----------- --------------+| Server | Skema | Basis Data | Objek ||----------+----------+------------+------------ -------------|| NULL | NULL | NULL | Homer,dbo,Musik,Artis |+----------+----------+------------+------ -------------------+

Anda harus mengganti koma dengan titik jika ingin melakukannya, atau menggunakan metode lain, seperti STRING_SPLIT() .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan garis bujur dan garis lintang terdekat dari tabel database MSSQL?

  2. Login gagal untuk pengguna 'DOMAIN\MACHINENAME$'

  3. Pengemudi tidak dapat membuat sambungan aman ke SQL Server dengan menggunakan enkripsi Secure Sockets Layer (SSL)

  4. Membuat Tabel dengan Kompresi di SQL Server (T-SQL)

  5. Buat Tabel Sementara di SQL Server