Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL में सबस्ट्रिंग कमांड:एक प्राइमर

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 विधि एक बेहतरीन कार्य है। इसका उपयोग आपके डेटाबेस के अंदर पहले से मौजूद डेटा से सार्थक कुंजी डेटा बिंदुओं को निकालने के लिए किया जा सकता है।


  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 सर्वर में प्रत्येक पंक्ति के लिए लौटाए गए डेटा को सीमित करने के लिए SET TEXTSIZE का उपयोग करें

  2. देखें कि क्या तालिका में OBJECTPROPERTY () का उपयोग करके SQL सर्वर में एक डिफ़ॉल्ट बाधा है

  3. Microsoft SQL सर्वर में लॉगिन करें त्रुटि:18456

  4. T-SQL का उपयोग करके SQL सर्वर में डेटाबेस के आकार की जाँच करने के 6 तरीके

  5. SQL क्वेरी के साथ अल्पविराम से अलग किए गए मान