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

Perintah SUBSTRING dalam SQL:A Primer

Mirip dengan artikel saya tentang perintah SQL Server STUFF , hari ini kita akan memeriksa perintah SUBSTRING SQL server. Ini mirip dengan perintah STUFF dalam hal parameter yang diterimanya.

Parameter yang diterima oleh SUBSTRING adalah sebagai berikut:

SUBSTRING ( STRING_VALUE , STARTING_POSITION, LENGTH)

Perintah SUBSTRING lazim di sebagian besar basis data standar utama seperti SQL Server, MySQL, Oracle, dan Postgres.

Mari kita jelajahi fungsi SUBSTRING dengan beberapa contoh.

Bagian 1 – Contoh SUBSTRING Sederhana

Dalam contoh pertama ini, nilai string "ABC" akan diteruskan ke fungsi SUBSTRING. Setiap panggilan akan memiliki argumen posisi awal yang bertambah 1. Argumen panjang akan tetap 1 untuk setiap panggilan.

SELECT SUBSTRING('ABC',1,1); --RETURNS : A

SELECT SUBSTRING('ABC',2,1); --RETURNS : B

SELECT SUBSTRING('ABC',3,1); --RETURNS : C

Dari contoh-contoh ini kita dapat melihat fungsionalitas umum dari fungsi SUBSTRING, setiap kenaikan pada posisi awal menggeser huruf yang dikembalikan. Dalam eksekusi #1 nilainya adalah A, #2 nilainya adalah B dan dalam #3 nilainya adalah C.

Fitur menarik dari fungsi SUBSTRING adalah parameter panjang tidak terputus jika melebihi panjang nilai yang Anda parsing. Misalnya, nilai "1000" memiliki panjang 4 digit. Jika diuraikan dengan kueri berikut yang menetapkan panjang 6, SUBSTRING mengembalikan string asli.

SELECT SUBSTRING('1000',1,6); --RETURNS : 1000

Bagian 2 – Mengurai Data dengan Fungsi SUBSTRING

Untuk contoh berikutnya, mari kita asumsikan bahwa kita memiliki database untuk menyimpan data tentang mobil bekas. Namun, alih-alih menggunakan model data relasional multi-tabel, database berisi kunci utama dan SKU atau unit penyimpanan saja. SKU ini dapat digunakan untuk menemukan beberapa bidang di sekitar fitur mobil dengan menggunakan kunci berikut:

TOY-CEL-R-1990-150
-------------------------------------------------------
MAKE-MODEL-COLOR-YEAR-MILEAGE

*Dalam contoh ini, jarak tempuh direpresentasikan pada skala 1/1000, yaitu 100 =100.000

IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'CODESIGHT_DEMOS')
BEGIN
  CREATE DATABASE CODESIGHT_DEMOS;
END;
GO

USE CODESIGHT_DEMOS;

IF OBJECT_ID('USEDCARS') IS NOT NULL DROP TABLE USEDCARS
CREATE TABLE USEDCARS
(
ID INT IDENTITY(1,1) PRIMARY KEY,
CAR_SKU VARCHAR(30)
)

--MAKE--MODEL--COLOR--YEAR--MILEAGE *1000
INSERT INTO USEDCARS
VALUES('TOY-CEL-R-1990-150')

INSERT INTO USEDCARS
VALUES('JEP-WRG-W-2019-15')

INSERT INTO USEDCARS
VALUES('FRD-ESC-G-1998-80')

SELECT * FROM USEDCARS

Output dari tabel mobil bekas adalah:

ID CAR_SKU
1 MAINAN-CEL-R-1990-150
2 JEP-WRG-W-2019-15
3 FRD-ESC-G-1998-80

Menggunakan fungsi SUBSTRING, nilai-nilai ini dapat diuraikan dengan menetapkan posisi awal dan parameter panjang yang benar ke bidang CAR_SKU.

SELECT SUBSTRING(CAR_SKU,1,3) AS MAKE,
SUBSTRING(CAR_SKU,5,3) AS MODEL,
SUBSTRING(CAR_SKU,9,1) AS COLOR,
SUBSTRING(CAR_SKU,11,4) AS YEAR,
SUBSTRING(CAR_SKU,16,3) * 1000 AS MILEAGE
FROM USEDCARS;
BUAT MODEL WARNA TAHUN MILEAGE
MAINAN CEL R 1990 150000
JEP WRG S 2019 15000
FRD ESC G 1998 80000

Bagian 3 – Mengabstraksi Logika SQL SUBSTRING ke Tampilan

Menggunakan fungsi SQL SUBSTRING, kami dapat menguraikan berbagai fitur dari setiap kendaraan di database kami. Mari ambil 1 langkah lebih jauh dan terjemahkan output tersebut menjadi data yang lebih bermakna dengan membangun tampilan pada kueri SUBSTRING.

Dalam model data relasional, ini akan dicapai dengan menggunakan gabungan untuk memasukkan pernyataan CASE WHEN untuk menerjemahkan nilai.

CREATE VIEW  VW_CAR_INVENTORY

AS

SELECT 

CASE WHEN SUBSTRING(CAR_SKU,1,3) = 'TOY' THEN 'TOYOTA'
     WHEN SUBSTRING(CAR_SKU,1,3) = 'JEP' THEN 'JEEP'
	 WHEN SUBSTRING(CAR_SKU,1,3) = 'FRD' THEN 'FORD'
	 END AS MAKE,

CASE WHEN SUBSTRING(CAR_SKU,5,3) = 'CEL' THEN 'CELICA'
     WHEN SUBSTRING(CAR_SKU,5,3) = 'WRG' THEN 'WRANGLER'
	 WHEN SUBSTRING(CAR_SKU,5,3) = 'ESC' THEN 'ESCAPE'
    END AS MODEL,

CASE WHEN SUBSTRING(CAR_SKU,9,1) = 'R' THEN 'RED'
     WHEN SUBSTRING(CAR_SKU,9,1) = 'W' THEN 'WHITE'
	 WHEN SUBSTRING(CAR_SKU,9,1) = 'G' THEN 'GREEN'
    END AS COLOR,

SUBSTRING(CAR_SKU,11,4) AS YEAR,

SUBSTRING(CAR_SKU,16,3) * 1000 AS MILEAGE

FROM USEDCARS
BUAT MODEL WARNA TAHUN MILEAGE
TOYOTA CELICA MERAH 1990 150000
JEEP WRANGLER PUTIH 2019 15000
FORD KELUARKAN HIJAU 1998 80000

Bagian 4 – SUBSTRING A alternatif untuk Nilai Integer

Fungsi SUBSTRING secara eksplisit untuk nilai string, jadi kueri berikut yang mencoba mengurai nilai integer dengan SUBSTRING akan gagal.

SELECT SUBSTRING(1000,1,1); 

--Msg 8116, Level 16, State 1, Line 78 Argument data type int is invalid for argument 1 of substring function.

Alternatif saat mengurai nilai integer adalah fungsi LEFT atau RIGHT, meskipun pendekatan ini kehilangan beberapa fleksibilitas yang disajikan dengan fungsi SUBSTRING.

SELECT LEFT(10000,1); --RETURNS : 1
SELECT RIGHT(1000,1) ;  --RETURNS : 0

Secara situasional, Anda juga dapat secara eksplisit memasukkan nilai integer sebagai string dan mensubstring nilai yang dicor:

SELECT (SUBSTRING(CAST(1000 AS VARCHAR(4)),1,1)) AS CASTED_SUBSTRING -- RETURNS : 1

Ringkasan

Artikel ini membahas parameter yang diperlukan untuk menggunakan fungsi SUBSTRING yang merupakan argumen kuat untuk posisi awal dan panjang. Dengan model data non-relasi, kami menggunakan metode SUBSTRING untuk mengekstrak fitur mobil dari tabel bidang 1 dan membuat tampilan dengan beberapa logika transformasi yang ada di dalamnya.

Metode SUBSTRING adalah fungsi yang bagus untuk diketahui saat melakukan ETL atau mengurai data di dalam database. Ini dapat digunakan untuk mengekstrak poin data kunci yang berarti dari data yang sudah ada di dalam database Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operasi SQL Server CRUD

  2. Bagaimana cara menemukan duplikat di beberapa kolom?

  3. Perbarui Langkah Pekerjaan untuk Pekerjaan Agen Server SQL (T-SQL)

  4. Cara Menghubungkan ke Beberapa Server SQL dalam Satu Klik (Grup Server Terdaftar) - Tutorial SQL Server / TSQL Bagian 5

  5. Kasus dalam Pernyataan Pilihan