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

Fungsi SQL Server TRIM, LTRIM, dan RTRIM

Fungsi TRIM SQL Server dirancang untuk menghapus spasi putih awal dan akhir dari string karakter. Spasi terdepan adalah spasi putih yang muncul sebelum string sebenarnya. Sebuah spasi tambahan terjadi setelahnya.

Pada artikel ini, kita akan memeriksa fungsi TRIM dan mengilustrasikan penggunaannya dengan contoh-contoh praktis. Jadi, mari kita mulai dari dasar.

Fungsi TRIM di SQL Server

SQL TRIM adalah fungsi bawaan yang memungkinkan kita memangkas karakter yang tidak perlu di kedua sisi string dengan satu tindakan. Paling sering, kami menggunakannya untuk menghapus spasi putih. Fungsi ini muncul di SQL Server 2017, dan sekarang juga ada di Azure SQL Database.

Sintaks fungsi SQL TRIM adalah sebagai berikut:

TRIM ( [ karakter DARI ] string )

  • karakter DARI adalah opsional parameter yang menentukan karakter mana yang harus kita hapus. Secara default, parameter ini berlaku untuk spasi di kedua sisi string kita.
  • string adalah wajib parameter yang menentukan string di mana kita perlu menghilangkan spasi/karakter lain yang tidak perlu.

Output yang dikembalikan adalah string tanpa karakter yang kami tentukan untuk dipangkas di awal dan akhir. Lihat contohnya:

SELECT TRIM( ' example ') AS Result;

Outputnya adalah:

contoh

Seperti yang kami sebutkan, fungsi TRIM juga dapat menghapus karakter lain. Lihat contoh di mana kita ingin membersihkan string dari karakter dan spasi yang tidak perlu:

SELECT TRIM( '.,# ' FROM '# ! example .') AS Result;

Outputnya adalah:

! contoh

Fungsi SQL TRIM tersedia di SQL Server mulai dari versi 2017, tetapi dimungkinkan untuk melakukan tugas sebelum rilis itu juga. Pengguna dapat menerapkan SQL LTRIM dan SQL RTRIM fungsi. Mereka hadir di semua versi SQL Server yang didukung.

Fungsi LTRIM di SQL Server

SQL LTRIM fungsi berfungsi untuk menghilangkan spasi yang tidak perlu di sisi kiri string. Sintaksnya adalah sebagai berikut:

LTRIM( string )

string adalah parameter wajib yang menentukan string target karakter yang perlu kita potong di sisi kiri. Outputnya adalah salinan dari string yang ditentukan, tetapi tanpa spasi di awal:

SELECT LTRIM('   SQL Function');

Keluaran:

'Fungsi SQL'

Fungsi RTRIM di SQL Server

SQL RTRIM fungsi bekerja dengan cara yang sama seperti LTRIM – perbedaannya adalah, ia menghilangkan spasi di sisi kanan string. Sintaksnya di bawah ini:

RTRIM(string)

string adalah parameter yang diperlukan yang menunjuk ke string karakter di mana kita perlu menghapus spasi tambahan.

SELECT RTRIM('SQL Server   ');

Keluaran:

'SQL Server'

Menggunakan LTRIM dan RTRIM secara bersamaan

Bekerja dengan SQL Server, kita sering perlu menghapus spasi dari satu sisi string saja. Namun, ada kasus ketika kita perlu menghapus string di kedua sisi. Fungsi TRIM yang kami jelaskan sebelumnya melayani tujuan itu, tetapi, seperti yang kami ingat, ini hanya tersedia di SQL Server 2017 dan yang lebih tinggi.

Apakah ada cara untuk menghapus spasi awal dan akhir untuk satu string tanpa fungsi TRIM? Ya. Kita bisa menggunakan LTRIM dan RTRIM bersama-sama dalam satu query.

Sintaksnya adalah:

LTRIM(RTRIM(string))

string mendefinisikan string target karakter yang ingin kita hapus dari spasi yang tidak perlu di kedua sisi. Perhatikan juga bahwa kita dapat menempatkan LTRIM dan RTRIM dalam urutan apa pun .

SELECT LTRIM(RTRIM('   SQL Server  '));

Keluaran:

'SQL Server'

Sekarang setelah kita mengklarifikasi esensi dari semua fungsi SQL ini (TRIM, LTRIM, dan RTRIM), mari kita selami lebih dalam.

Mengapa Spasi Penting

Orang mungkin bertanya mengapa penting untuk menghapus spasi seperti itu. Secara sederhana, ini karena mereka dapat menjadi gangguan ketika, misalnya, membandingkan nilai. Spasi itu sendiri dianggap sebagai bagian dari string jika ada, oleh karena itu, lebih baik untuk memperhatikan masalah tersebut.

Mari kita periksa fungsi-fungsi ini dengan benar.

Pertama, kita membuat tabel sederhana untuk tipe database yang dijalankan di perusahaan kita. Tabel kami memiliki tiga kolom. Yang pertama adalah kolom ID yang diperlukan untuk mengidentifikasi setiap baris secara unik. Yang kedua adalah DBTypeNameA . Yang ketiga adalah DBTypeNameB .

Dua kolom terakhir berbeda menurut tipe datanya. DBTypeNameA pertama menggunakan VARCHAR tipe data, dan DBTypeNameB menggunakan CHAR tipe data.

Untuk kedua kolom, kami mengalokasikan panjang data 50.

- Listing 1: Create a Simple Table
USE DB2
GO
CREATE TABLE DBType (
ID INT IDENTITY(1,1)
,DBTypeNameA VARCHAR (50)
,DBTypeNameB CHAR (50))

GO

Perhatikan perbedaan antara tipe data ini.

  • Untuk kolom VARCHAR, SQL Server tidak mengalokasikan ruang untuk 50 karakter yang kita harapkan di kolom ab initio. Kami mengatakan bahwa kolom harus membuat ketentuan untuk maksimum dari 50 karakter, tetapi alokasikan ruang sesuai kebutuhan.
  • Untuk kolom CHAR, ketentuan tersebut dibuat untuk 50 karakter setiap kali sebuah baris disisipkan, tidak peduli apakah nilai sebenarnya membutuhkan spasi itu atau tidak.

Jadi, menggunakan VARCHAR (Variable Characters) adalah cara untuk menghemat ruang.

Setelah membuat tabel, kami mengisinya dengan menggunakan kode di Listing 2.

-- Listing 2: Populate the Table
USE DB2
GO
INSERT INTO DBType VALUES ('SQL Server','SQL Server');
INSERT INTO DBType VALUES (' SQL Server ',' SQL Server ');
INSERT INTO DBType VALUES ('  SQL Server  ','  SQL Server  ');
INSERT INTO DBType VALUES ('Oracle','Oracle');
INSERT INTO DBType VALUES (' Oracle ',' Oracle ');
INSERT INTO DBType VALUES ('  Oracle  ','  Oracle  ');
INSERT INTO DBType VALUES ('MySQL','MySQL');
INSERT INTO DBType VALUES (' MySQL ',' MySQL ');
INSERT INTO DBType VALUES ('  MySQL  ','  MySQL  ');

Saat mengisi tabel kami, kami sengaja memasukkan nilai dengan spasi awal dan akhir. Kami akan menggunakannya dalam demonstrasi kami.

Saat kita mengkueri tabel (lihat Daftar 3), kita dapat melihat “distorsi” pada data seperti yang dirender dalam SSMS (Gambar 1).

-- Listing 3: Query the Table
USE DB2
GO
SELECT * FROM DBType;

Distorsi ini terlihat karena kita memiliki spasi terdepan. Ruang tambahan lebih sulit untuk divisualisasikan dengan cara ini.

Pertanyaannya adalah Listing 4 memberikan pandangan yang lebih dalam tentang "distorsi" ini. Ini memperkenalkan fungsi LEN dan DATALENGTH:

  • LEN() mengembalikan jumlah karakter dalam string tidak termasuk spasi tambahan.
  • DATALENGTH() mengembalikan jumlah byte yang digunakan untuk mewakili ekspresi.
-- Listing 4: Query the Table
USE DB2
GO
SELECT DBTypeNameA
, LEN(DBTypeNameA) LenVarcharCol
, DATALENGTH(DBTypeNameA) DataLenVarcharCol
, DBTypeNameB
, LEN(DBTypeNameB) LenCharCol
, DATALENGTH(DBTypeNameB) DataLenCharCol
FROM DBType;

Gambar 2 menunjukkan variasi panjang untuk ekspresi seperti "SQL Server," "Oracle," dan "MySQL" karena spasi awal dan akhir.

Ini menyiratkan bahwa ekspresi ini tidak sama sejauh menyangkut mesin kueri SQL Server. Kita dapat melihat ini dengan jelas dengan menjalankan kode di Listing 5.

-- Listing 5: Query for Specific 
USE DB2
GO
SELECT * FROM DBType WHERE DBTypeNameA='SQL Server';
SELECT * FROM DBType WHERE DBTypeNameA='Oracle';
SELECT * FROM DBType WHERE DBTypeNameA='MySQL';

DataLenCharCol field mewakili output dari fungsi DATALENGTH() pada kolom CHAR. Oleh karena itu, salah satu konsekuensi dari disparitas antara “SQL Server” dan “SQL Server” ini adalah hasil query yang ditampilkan pada Gambar 3.

Kami melihat bahwa meskipun kami memiliki tiga baris dengan setiap tipe database, kueri kami hanya mengembalikan satu dari masing-masing karena spasi di depan dan di belakang membedakan nilainya.

Memecahkan Masalah

Mendapatkan hasil yang benar untuk kueri di Listing 5 layak dan mudah. Kita membutuhkan fungsi SQL Server TRIM() seperti yang ditunjukkan pada Listing 6.

-- Listing 6: Query for Specific 
USE DB2
GO
SELECT * FROM DBType WHERE TRIM(DBTypeNameA)='SQL Server';
SELECT * FROM DBType WHERE TRIM(DBTypeNameA)='Oracle';
SELECT * FROM DBType WHERE TRIM(DBTypeNameA)='MySQL';

Tanpa fungsi TRIM() ini, kita bisa mendapatkan hasil yang salah dalam beberapa skenario.

Kita dapat mengambil ini lebih jauh dengan memuat data ke dalam tabel terpisah, dengan asumsi kita ingin menyelesaikan masalah secara permanen (semacam pembersihan data).

-- Listing 7: Query for Specific 
USE DB2
GO
SELECT ID, TRIM(DBTypeNameA) DBTypeNameA, TRIM(DBTypeNameB) DBTypeNameB FROM DBType;

Bandingkan hasil Listing 7 (Gambar 5) dengan Listing 3 (Gambar 1). Kami juga dapat membuat tabel lain dengan hasil ini diatur untuk membersihkan data (lihat Daftar 8).

-- Listing 8: Create a New Table (Data Cleanup)
USE DB2
GO
SELECT ID, TRIM(DBTypeNameA) DBTypeNameA, TRIM(DBTypeNameB) DBTypeNameB INTO DBType_New FROM DBType;

SELECT * FROM DBType_New;

Dengan cara ini, kami dapat menyelesaikan masalah kami secara permanen dan menghapus overhead fungsi yang dijalankan setiap kali kami perlu mengekstrak data dari tabel kami.

Kesimpulan

Fungsi SQL Server TRIM() dapat digunakan untuk menghapus spasi awal dan akhir dari string. LTRIM dan RTRIM adalah dua varian dari fungsi ini yang berfokus pada spasi di depan (LEFT) dan di belakang (RIGHT).

Kita dapat menerapkan TRIM() dengan cepat untuk merapikan kumpulan hasil dan memastikan mendapatkan kumpulan hasil yang benar. Selain itu, kita dapat menggunakannya untuk menghilangkan spasi sambil memindahkan data dengan rapi dari satu tabel ke tabel lainnya.

Artikel terkait

Bagaimana Mengurai String Seperti Pro Menggunakan Fungsi SQL SUBSTRING()?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan SQL Server menjalankan port?

  2. SQL server mengabaikan kasus dalam ekspresi where

  3. PILIH UNTUK PEMBARUAN dengan SQL Server

  4. Terhubung Ke SQL Server Dengan Otentikasi Windows Dari Mesin Linux Melalui JDBC

  5. Dapatkan ID baris yang terakhir dimasukkan (dengan pernyataan SQL)