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

SQL सर्वर में LEN () बनाम DATALENGTH ()

SQL सर्वर (या Azure) में T-SQL का उपयोग करते समय LEN() और DATALENGTH() फ़ंक्शन अक्सर एक ही परिणाम लौटाएंगे, लेकिन हमेशा नहीं। ऐसे कुछ मामले हैं जहां ये फ़ंक्शन समान डेटा प्रतीत होने वाले के लिए पूरी तरह से अलग परिणाम लौटाएंगे। ऐसा इसलिए है क्योंकि LEN() . के बीच एक महत्वपूर्ण अंतर है और DATALENGTH() फ़ंक्शन काम करते हैं, जैसा कि हम यहां देखेंगे।

सबसे पहले, यहां प्रत्येक की त्वरित परिभाषा दी गई है:

LEN()
अनुगामी रिक्त स्थान को छोड़कर, निर्दिष्ट स्ट्रिंग अभिव्यक्ति के वर्णों की संख्या देता है।
DATALENGTH()
किसी भी व्यंजक को दर्शाने के लिए प्रयुक्त बाइट की संख्या देता है।

नोट "अक्षर" बनाम "बाइट्स"। यह भी ध्यान रखें कि "पिछली जगह को छोड़कर" केवल एक पर लागू होता है।

LEN() . के बीच अंतर दिखाने के लिए यहां कुछ उदाहरण दिए गए हैं और DATALENGTH() .

पिछला रिक्त स्थान

LEN() . के बीच एक अंतर और DATALENGTH() कार्य यह है कि LEN() फ़ंक्शन बहिष्कृत अनुगामी रिक्त स्थान (पिछली जगह, टैब, आदि) जबकि DATALENGTH() शामिल हैं अनुगामी रिक्त स्थान। ध्यान दें, हम केवल उन रिक्त स्थानों के बारे में बात कर रहे हैं जो अंत . पर आते हैं स्ट्रिंग की - शुरुआत में या बीच में नहीं।

यहां बिना का उदाहरण दिया गया है अनुगामी रिक्त स्थान:

SELECT 
    LEN('Lit') AS Len,
    DATALENGTH('Lit') AS DataLength;

परिणाम:

Len  DataLength
---  ----------
3    3   

और यहां एक उदाहरण के साथ . है अनुगामी रिक्त स्थान:

SELECT 
    LEN('Lit') AS Len,
    DATALENGTH('Lit') AS DataLength;

परिणाम:

Len  DataLength
---  ----------
3    4  

हालांकि, प्रमुख रिक्त स्थान की गणना दोनों कार्यों द्वारा की जाती है:

SELECT 
    LEN('Lit') AS Len,
    DATALENGTH('Lit') AS DataLength;

परिणाम:

Len  DataLength
---  ----------
4    4         

बाइट्स बनाम कैरेक्टर

LEN() . के बीच एक और महत्वपूर्ण अंतर और DATALENGTH() क्या वह LEN() . है फ़ंक्शन वर्णों . की संख्या लौटाता है एक तार में। दूसरी ओर, DATALENGTH() बाइट्स . की संख्या लौटाता है एक अभिव्यक्ति में।

यह एक महत्वपूर्ण अंतर है क्योंकि अभिव्यक्ति में बाइट्स की संख्या जरूरी नहीं कि स्ट्रिंग में वर्णों की संख्या से मेल खाती हो। यूनिकोड स्ट्रिंग को संसाधित करते समय, DATALENGTH() वर्णों की संख्या का दोगुना लौटाएगा। ऐसा इसलिए है क्योंकि एक यूनिकोड स्ट्रिंग प्रति वर्ण 2 बाइट्स संग्रहीत करती है।

ऊपर दिए गए उदाहरण में, हमने देखा कि दोनों LEN() और DATALENGTH() Lit . शब्द के लिए वही परिणाम लौटाया ( 3 ) लेकिन, एक बार जब हम डेटाबेस को क्वेरी करना शुरू करते हैं, तो परिणाम इस बात पर निर्भर करेगा कि डेटा कैसे संग्रहीत किया जाता है। उदाहरण के लिए, यदि इसे varchar . के रूप में संग्रहीत किया जाता है , परिणाम समान होंगे। अगर इसे nvarchar . के रूप में संग्रहीत किया जाता है DATALENGTH() फ़ंक्शन वर्णों की संख्या से दोगुना वापस आ जाएगा। और अगर यह कहने के रूप में संग्रहीत है, char(25)DATALENGTH() ठीक 25 वर्ण लौटाएगा।

उदाहरण

आइए निम्नलिखित क्वेरी चलाते हैं:

SELECT 
    ArtistName, 
    LEN(ArtistName) AS Len,
    DATALENGTH(ArtistName) AS DataLength
FROM Artists 
WHERE ArtistName = 'Lit';

इस क्वेरी के परिणाम इस बात पर निर्भर करेंगे कि डेटा कैसे संग्रहीत किया जाता है।

nvarchar(255)

अगर ArtistName कॉलम डेटा को nvarchar(255) . के रूप में संग्रहीत करता है :

ArtistName  Len  DataLength
----------  ---  ----------
Lit         3    6         

वर्कर(255)

अगर हम उस कॉलम को varchar(255) . में बदलते हैं , हमें निम्नलिखित परिणाम मिलते हैं:

ArtistName  Len  DataLength
----------  ---  ----------
Lit         3    3         

चार(25)

अगर हम उस कॉलम को char(25) . में बदलते हैं , हमें निम्नलिखित परिणाम मिलते हैं:

ArtistName                 Len  DataLength
-------------------------  ---  ----------
Lit                        3    25        

तो शायद इस सब के लिए एक नैतिक यह है, यदि आप स्ट्रिंग की लंबाई आदि को पुनः प्राप्त करने का प्रयास करते समय अपने आप को अजीब परिणाम प्राप्त करते हुए पाते हैं, तो जांच लें कि आप सही फ़ंक्शन का उपयोग कर रहे हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दिनांक सीमाओं के बीच दिनांक उत्पन्न करें

  2. SQL सर्वर (T-SQL) में एक स्ट्रिंग के मध्य में वर्ण सम्मिलित करें

  3. MS SQL सर्वर बोली के उदाहरण पर SQL (DDL, DML) पर ट्यूटोरियल

  4. SQL सर्वर डेटाबेस में सभी विदेशी कुंजी बाधाओं को सक्षम करने के लिए स्क्रिप्ट कैसे उत्पन्न करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 78

  5. SQL सर्वर में डेटा फ़ाइलों के प्रबंधन के मूल सिद्धांत