SQL सर्वर STUFF कमांड के बारे में मेरे लेख के समान , आज हम SUBSTRING SQL सर्वर कमांड की जांच करेंगे। यह स्वीकार किए जाने वाले मापदंडों के संबंध में STUFF कमांड के समान है।
सबस्ट्रिंग द्वारा स्वीकृत पैरामीटर इस प्रकार हैं:
SUBSTRING ( STRING_VALUE , STARTING_POSITION, LENGTH)
SUBSTRING कमांड अधिकांश प्रमुख मानक डेटाबेस जैसे SQL सर्वर, MySQL, Oracle, और Postgres में प्रचलित है।
आइए कई उदाहरणों के साथ सबस्ट्रिंग फ़ंक्शन को देखें।
अनुभाग 1 - सरल सबस्ट्रिंग उदाहरण
इस पहले उदाहरण में, "एबीसी" का एक स्ट्रिंग मान सबस्ट्रिंग फ़ंक्शन को पास किया जाएगा। प्रत्येक कॉल में प्रारंभिक स्थिति तर्क 1 से बढ़ा हुआ होगा। लंबाई तर्क प्रत्येक कॉल के लिए 1 रहेगा।
SELECT SUBSTRING('ABC',1,1); --RETURNS : A
SELECT SUBSTRING('ABC',2,1); --RETURNS : B
SELECT SUBSTRING('ABC',3,1); --RETURNS : C
इन उदाहरणों से हम सबस्ट्रिंग फ़ंक्शन की सामान्य कार्यक्षमता देख सकते हैं, प्रारंभिक स्थिति में प्रत्येक वेतन वृद्धि पत्र को वापस कर देती है। निष्पादन #1 में मान A है, #2 मान B है और #3 में मान C है।
सबस्ट्रिंग फ़ंक्शन की एक दिलचस्प विशेषता यह है कि लंबाई पैरामीटर गैर-ब्रेकिंग है यदि यह आपके द्वारा पार्स किए जा रहे मान की लंबाई से अधिक है। उदाहरण के लिए, मान "1000" की लंबाई 4 अंक है। यदि 6 की लंबाई निर्दिष्ट करने वाली निम्न क्वेरी के साथ पार्स किया जाता है, तो सबस्ट्रिंग मूल स्ट्रिंग लौटाता है।
SELECT SUBSTRING('1000',1,6); --RETURNS : 1000
सेक्शन 2 - सबस्ट्रिंग फ़ंक्शन के साथ डेटा पार्स करना
अगले उदाहरण के लिए, मान लें कि हमारे पास इस्तेमाल की गई कारों के बारे में डेटा रखने के लिए एक डेटाबेस है। हालाँकि, एक बहु-तालिका संबंधपरक डेटा मॉडल का उपयोग करने के बजाय, डेटाबेस में केवल एक प्राथमिक कुंजी और एक 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
यूज्ड कार टेबल का आउटपुट है:
आईडी | 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;
बनाना | मॉडल | रंग | वर्ष | माइलेज |
खिलौना | सीईएल | आर | 1990 | 150000 |
जेईपी | WRG | डब्ल्यू | 2019 | 15000 |
एफआरडी | ईएससी | जी | 1998 | 80000 |
सेक्शन 3 - सबस्ट्रिंग SQL लॉजिक को व्यू में एब्सट्रैक्ट करना
SQL सबस्ट्रिंग फ़ंक्शन का उपयोग करके, हम अपने डेटाबेस में प्रत्येक वाहन की विभिन्न विशेषताओं को पार्स करने में सक्षम थे। आइए इसे 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
बनाना | मॉडल | रंग | वर्ष | माइलेज |
टोयोटा | सेलिका | लाल | 1990 | 150000 |
JEEP | रैंगलर | सफेद | 2019 | 15000 |
फोर्ड | एस्केप | हरा | 1998 | 80000 |
धारा 4 - सबस्ट्रिंग 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
सारांश
इस आलेख में सबस्ट्रिंग फ़ंक्शन का उपयोग करने के लिए आवश्यक पैरामीटर शामिल हैं जो प्रारंभिक स्थिति और लंबाई के लिए एक मजबूत तर्क है। एक गैर-संबंध डेटा मॉडल के साथ, हमने 1 फ़ील्ड तालिका से कार सुविधाओं को निकालने के लिए सबस्ट्रिंग विधि का उपयोग किया और इसमें कुछ परिवर्तन तर्क के साथ एक दृश्य का निर्माण किया।
ETL करते समय या डेटाबेस के अंदर डेटा को पार्स करते समय जानने के लिए SUBSTRING विधि एक बेहतरीन कार्य है। इसका उपयोग आपके डेटाबेस के अंदर पहले से मौजूद डेटा से सार्थक कुंजी डेटा बिंदुओं को निकालने के लिए किया जा सकता है।