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

Pilih Data melalui Fungsi Bernilai Tabel di SQL Server

SELECT pernyataan mungkin pernyataan yang paling umum digunakan di SQL Server. Sebagian besar waktu pernyataan ini dijalankan terhadap tampilan atau langsung terhadap tabel untuk mengambil baris data tabular.

Namun tampilan dan tabel bukan satu-satunya objek yang dapat Anda jalankan SELECT pernyataan pada. SELECT pernyataan juga dapat digunakan pada objek lain seperti fungsi rowset, OPENXML, dan fungsi yang ditentukan pengguna.

Artikel ini memberikan contoh pemilihan data melalui fungsi bernilai tabel.

Contoh 1 – Fungsi Dasar

Berikut adalah fungsi cepat yang memilih data dasar dari tabel melalui fungsi bernilai tabel sebaris.

SELECT * FROM udf_Cats_ITVF();

Hasil:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

Fungsinya terlihat seperti ini:

CREATE FUNCTION dbo.udf_Cats_ITVF()
    RETURNS TABLE
AS
RETURN (
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats
    );
GO

Fungsi ini hanya memilih semua baris dari tabel. Tidak ada argumen yang diperlukan.

Jika Anda ingin memilih kucing tertentu, Anda perlu menambahkan WHERE klausa.

SELECT * FROM udf_Cats_ITVF()
WHERE CatName = 'Fetch';

Hasil:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

Sekarang harus saya akui, fungsi ini agak berlebihan, karena kita bisa saja memilih data langsung dari tabel. Atau kita bisa membuat tampilan untuk melakukan pekerjaan itu. Tetapi fungsi yang ditentukan pengguna memiliki manfaat yang tidak dimiliki tabel dan tampilan:parameter.

Contoh 2 – Fungsi dengan Parameter

Salah satu manfaat fungsi bernilai tabel adalah mendukung parameter. Di sinilah fungsinya menjadi sedikit lebih berguna. Beberapa merujuk ke fungsi bernilai tabel sebagai "tampilan berparameter", karena mereka berperilaku seperti tampilan tetapi dengan fungsionalitas tambahan yang memungkinkan parameter.

Jadi kita bisa membuat variasi dari fungsi sebelumnya untuk menerima argumen untuk nama kucing.

SELECT * FROM udf_CatsByName_ITVF('Fetch');

Hasil:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

Fungsi baru terlihat seperti ini:

CREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) )
    RETURNS TABLE
AS
RETURN (
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats
    WHERE CatName = @CatName
    );

GO

Contoh 3 – Bergabung

Fungsi bernilai tabel dapat dimasukkan dalam gabungan.

Di sini, saya memilih semua kolom dari fungsi bernilai tabel yang mengembalikan semua album oleh artis tertentu:

SELECT * FROM ufn_AlbumsByArtist(1);

Hasil:

+------------+-------------------------+---------+
| ArtistId   | AlbumName               | Genre   |
|------------+-------------------------+---------|
| 1          | Powerslave              | Rock    |
| 1          | Somewhere in Time       | Rock    |
| 1          | Piece of Mind           | Rock    |
| 1          | Killers                 | Rock    |
| 1          | No Prayer for the Dying | Rock    |
+------------+-------------------------+---------+

Satu-satunya masalah dengan fungsi ini adalah tidak mengembalikan nama artis. Jika saya ingin nama artis, saya harus menggabungkannya dengan tabel yang berisi data itu. Dalam hal ini tabel yang berisi nama artis disebut Artists , jadi saya dapat mengubah kueri saya sebagai berikut:

SELECT  
    ar.ArtistName,
    aba.AlbumName,
    aba.Genre
FROM ufn_AlbumsByArtist(1) aba
INNER JOIN Artists ar
ON aba.ArtistId = ar.ArtistId;

Hasil:

+--------------+-------------------------+---------+
| ArtistName   | AlbumName               | Genre   |
|--------------+-------------------------+---------|
| Iron Maiden  | Powerslave              | Rock    |
| Iron Maiden  | Somewhere in Time       | Rock    |
| Iron Maiden  | Piece of Mind           | Rock    |
| Iron Maiden  | Killers                 | Rock    |
| Iron Maiden  | No Prayer for the Dying | Rock    |
+--------------+-------------------------+---------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara update dan order menggunakan ms sql

  2. Pengkodean karakter default SQL Server

  3. Bagaimana saya bisa mencadangkan database SQL Server jarak jauh ke drive lokal?

  4. Dapatkan Informasi Tampilan dengan Tampilan Skema Informasi VIEWS di SQL Server

  5. Cara Membagi Jendela Kueri di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 13