Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SUBSTRING Команда в SQL:Пример

Подобно на моята статия относно командата STUFF на SQL Server , днес ще разгледаме командата SUBSTRING SQL сървър. Тя е подобна на командата STUFF по отношение на параметрите, които приема.

Параметрите, приети от SUBSTRING, са както следва:

SUBSTRING ( STRING_VALUE , STARTING_POSITION, LENGTH)

Командата SUBSTRING е разпространена в повечето основни стандартни бази данни като SQL Server, MySQL, Oracle и Postgres.

Нека разгледаме функцията SUBSTRING с няколко примера.

Раздел 1 – Прости примери за SUBSTRING

В този първи пример стойност на низ от „ABC“ ще бъде предадена на функцията SUBSTRING. Всяко извикване ще има аргумент за начална позиция, увеличен с 1. Аргументът за дължина ще остане 1 за всяко повикване.

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

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

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

От тези примери можем да видим общата функционалност на функцията SUBSTRING, всяко увеличение в началната позиция измества върнатата буква. При изпълнение #1 стойността е A, #2 стойността е B и в #3 стойността е C.

Интересна характеристика на функцията SUBSTRING е, че параметърът за дължина не е прекъсващ, ако надвишава дължината на стойността, която анализирате. Например стойността „1000“ има дължина от 4 цифри. Ако се анализира със следната заявка, указваща дължина от 6, SUBSTRING връща оригиналния низ.

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

Раздел 2 – Синтактичен анализ на данни с функцията SUBSTRING

За следващия пример нека приемем, че имаме база данни за съхраняване на данни за употребявани автомобили. Въпреки това, вместо да използва модел на релационни данни с множество таблици, базата данни съдържа първичен ключ и SKU или само единица за съхранение. Този SKU може да се използва за намиране на множество полета около характеристиките на автомобил, като се използва следния ключ:

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

*В тези примери пробегът е представен в мащаб от 1/1000, т.е. 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

Резултатът от таблицата за използвани автомобили е:

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

Използвайки функцията SUBSTRING, тези стойности могат да бъдат анализирани чрез присвояване на правилните параметри за начална позиция и дължина на полето 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;
НАПРАВЕТЕ МОДЕЛ ЦВЯТ ГОДИНА ПРОМИЛЕЖИ
ИГРАЧКА CEL R 1990 150 000
JEP WRG W 2019 15 000
FRD ESC G 1998 80 000

Раздел 3 – Абстрагиране на SUBSTRING SQL логиката към изгледи

Използвайки функцията SQL SUBSTRING, успяхме да анализираме различните характеристики на всяко превозно средство в нашата база данни. Нека направим тази 1 стъпка по-далеч и да преведем този изход в по-смислени данни, като изградим изглед върху заявката SUBSTRING.

В релационен модел на данни това ще бъде постигнато чрез използване на съединения за включване на оператора CASE WHEN за превод на стойностите.

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
НАПРАВЕТЕ МОДЕЛ ЦВЯТ ГОДИНА ПРОМИЛЕЖИ
TOYOTA CELICA ЧЕРВЕНО 1990 150 000
ДЖИП WRANGLER БЯЛ 2019 15000
FORD БЯГВАНЕ ЗЕЛЕНО 1998 80 000

Раздел 4 – SUBSTRING A Алтернативи за целочислени стойности

Функцията SUBSTRING е изрично за низови стойности, така че следната заявка, която се опитва да анализира целочислена стойност с SUBSTRING, ще се провали.

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.

Алтернативата при анализиране на целочислени стойности е функцията НАЛЯВО или ДЯСНО, въпреки че този подход губи част от гъвкавостта, предоставена с функцията SUBSTRING.

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

Ситуално можете също така изрично да прехвърлите целочислената стойност като низ и да поднизвате прехвърлената стойност:

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

Резюме

Тази статия обхваща параметрите, необходими за използване на функцията SUBSTRING, която е силен аргумент за начална позиция и дължина. С нерелационен модел на данни използвахме метода SUBSTRING, за да извлечем характеристиките на автомобила от таблица с 1 поле и да изградим изглед с вградена в него логика на трансформация.

Методът SUBSTRING е чудесна функция, която трябва да знаете, когато изпълнявате ETL или анализирате данните в база данни. Може да се използва за извличане на значими ключови данни от вече съществуващите данни във вашата база данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите текущата дата в SQL Server

  2. SQL Server:Примери за PIVOTing String данни

  3. SQL Server произволно сортиране

  4. JSON в SQL Server

  5. .NET 4:Как да конфигурирате EDMX файл в друг сборник в Web.Config