मैं SQL सर्वर में बड़ी स्ट्रिंग है। मैं उस स्ट्रिंग को 10 या 15 कैरेक्टर में बदलना चाहता हूं
मूल तार
this is test string. this is test string. this is test string. this is test string.
वांछित स्ट्रिंग
this is test string. this is ......
मैं SQL सर्वर में बड़ी स्ट्रिंग है। मैं उस स्ट्रिंग को 10 या 15 कैरेक्टर में बदलना चाहता हूं
मूल तार
this is test string. this is test string. this is test string. this is test string.
वांछित स्ट्रिंग
this is test string. this is ......
जवाबों:
यदि आप केवल अपनी लंबी स्ट्रिंग के कुछ वर्ण वापस करना चाहते हैं, तो आप उपयोग कर सकते हैं:
select
left(col, 15) + '...' col
from yourtable
SQL फिडेल को डेमो के साथ देखें ।
यह स्ट्रिंग के पहले 15 वर्णों को लौटाएगा और फिर ...इसे समाप्त करने के लिए सहमति देगा।
यदि आप यह सुनिश्चित करना चाहते हैं कि स्ट्रिंग्स 15 से कम न मिले ...तो आप उपयोग कर सकते हैं:
select
case
when len(col)>=15
then left(col, 15) + '...'
else col end col
from yourtable
SQL फिडेल को डेमो के साथ देखें
...जब आप इसे लागू नहीं करते हैं , तो आप संलग्न हो जाते हैं
आप उपयोग कर सकते हैं
LEFT(column, length)
या
SUBSTRING(column, start index, length)
मुझे लगता है कि यहां उत्तर बहुत अच्छे हैं, लेकिन मैं एक परिदृश्य जोड़ना चाहूंगा।
कई बार मैं इसकी लंबाई के बारे में चिंता किए बिना, एक स्ट्रिंग के सामने से पात्रों की एक निश्चित राशि लेना चाहता हूं। RIGHT () और SUBSTRING () के साथ ऐसा करने के कई तरीके हैं, लेकिन उन सभी को स्ट्रिंग की लंबाई जानने की आवश्यकता है जो कभी-कभी चीजों को धीमा कर सकती हैं।
मैंने इसके बजाय STUFF () फ़ंक्शन का उपयोग किया है:
SET @Result = STUFF(@Result, 1, @LengthToRemove, '')
यह खाली स्ट्रिंग के साथ अनावश्यक स्ट्रिंग की लंबाई को प्रतिस्थापित करता है।
आप कास्ट () ऑपरेशन का उपयोग भी कर सकते हैं:
Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name
आप नीचे का उपयोग भी कर सकते हैं, आईआईएफ केस स्टेटमेंट से बचता है और आवश्यकता होने पर केवल इलिप्स जोड़ता है (केवल SQL सर्वर 2012 और बाद में अच्छा है) और केस स्टेटमेंट अधिक एएनएसआई अनुरूप (लेकिन अधिक क्रिया) है
SELECT
col, LEN(col),
col2, LEN(col2),
col3, LEN(col3) FROM (
SELECT
col,
LEFT(x.col, 15) + (IIF(len(x.col) > 15, '...', '')) AS col2,
LEFT(x.col, 15) + (CASE WHEN len(x.col) > 15 THEN '...' ELSE '' END) AS col3
from (
select 'this is a long string. One that is longer than 15 characters' as col
UNION
SELECT 'short string' AS col
UNION
SELECT 'string==15 char' AS col
UNION
SELECT NULL AS col
UNION
SELECT '' AS col
) x
) y