উত্তর:
যেমন
DECLARE @String VARCHAR(100)
SET @String = 'TEST STRING'
-- Chop off the end character
SET @String =
CASE @String WHEN null THEN null
ELSE (
CASE LEN(@String) WHEN 0 THEN @String
ELSE LEFT(@String, LEN(@String) - 1)
END
) END
SELECT @String
যদি কোনও কারণে আপনার কলামের যুক্তি জটিল (কেস ... তারপর ... অন্য ... শেষ) হয়ে থাকে তবে উপরের সমাধানগুলি আপনাকে লেন () ফাংশনে একই লজিকটির পুনরাবৃত্তি করতে হবে। একই যুক্তিকে সদৃশ করা একটি জগাখিচুড়ি হয়ে যায়। যদি এটি হয় তবে এটি সমাধান করার মতো সমাধান। এই উদাহরণটি সর্বশেষ অযাচিত কমা থেকে মুক্তি পেয়েছে। অবশেষে আমি প্রতিবেদনের জন্য একটি ব্যবহার পেয়েছি।
select reverse(stuff(reverse('a,b,c,d,'), 1, 1, ''))
NULL
যদি একটি স্ট্রিং, যাতে নির্দিষ্ট ডিলিট সীমার চেয়ে খাটো পাস STUFF
। ISNULL
খালি স্ট্রিংয়ের ক্ষেত্রে পৃথক আউটপুট মান পেতে এটি একটিতে মুড়িয়ে দিন ।
select reverse(stuff(reverse('a,b,c,d,'), 2, 1, ''))
এটা চেষ্টা কর:
select substring('test string', 1, (len('test string') - 1))
select substring('test string', 0, len('test string'))
?
যদি আপনার স্ট্রিং খালি থাকে,
DECLARE @String VARCHAR(100)
SET @String = ''
SELECT LEFT(@String, LEN(@String) - 1)
তারপরে এই কোডটি ত্রুটির বার্তা তৈরি করবে 'অবৈধ দৈর্ঘ্যের প্যারামিটারটি সাবস্ট্রিং ফাংশনে পাস হয়েছে।'
আপনি এটি এইভাবে পরিচালনা করতে পারেন:
SELECT LEFT(@String, NULLIF(LEN(@String)-1,-1))
এটি সর্বদা ফলাফল, এবং খালি স্ট্রিংয়ের ক্ষেত্রে NULL প্রদান করবে।
যদি আপনার কলোন হয় text
এবং না হয় varchar
তবে আপনি এটি ব্যবহার করতে পারেন:
SELECT SUBSTRING(@String, 1, NULLIF(DATALENGTH(@String)-1,-1))
আপনি যদি REVERSE-STUFF-REVERSE এর তিনটির পরিবর্তে দুটি পদক্ষেপে এটি করতে চান তবে আপনার তালিকার বিভাজকটি এক বা দুটি স্পেসে থাকতে পারেন। তারপরে ট্রেলিং স্পেসগুলি ছাঁটাতে আরটিআরআইএম ব্যবহার করুন এবং ',' দিয়ে ডাবল স্পেসগুলি প্রতিস্থাপনের জন্য পুনরায় প্রতিস্থাপন করুন
select REPLACE(RTRIM('a b c d '),' ', ', ')
তবে, যদি আপনার মূল স্ট্রিংটিতে অভ্যন্তরীণ জায়গা থাকতে পারে তবে এটি ভাল ধারণা নয়।
পারফরম্যান্স সম্পর্কে নিশ্চিত না। প্রতিটি REVERSE স্ট্রিংয়ের একটি নতুন অনুলিপি তৈরি করে তবে STUFF REPLACE এর চেয়ে তৃতীয় দ্রুত।
আরো দেখুন এই
@result = substring(@result, 1, (LEN(@result)-1))
আমি এই প্রস্তাব করতে পারেন - হ্যাক-;)।
select
left(txt, abs(len(txt + ',') - 2))
from
t;
আপনি ফাংশন তৈরি করতে পারেন
CREATE FUNCTION [dbo].[TRUNCRIGHT] (@string NVARCHAR(max), @len int = 1)
RETURNS NVARCHAR(max)
AS
BEGIN
IF LEN(@string)<@len
RETURN ''
RETURN LEFT(@string, LEN(@string) - @len)
END
এটা চেষ্টা কর
DECLARE @String VARCHAR(100)
SET @String = 'TEST STRING'
SELECT LEFT(@String, LEN(@String) - 1) AS MyTrimmedColumn
আমার উত্তর গৃহীত উত্তরের মতো, তবে এটি নাল এবং খালি স্ট্রিংয়ের জন্যও পরীক্ষা করে।
DECLARE @String VARCHAR(100)
SET @String = 'asdfsdf1'
-- If string is null return null, else if string is empty return as it is, else chop off the end character
SET @String = Case @String when null then null else (case LEN(@String) when 0 then @String else LEFT(@String, LEN(@String) - 1) end ) end
SELECT @String
এটি বেশ দেরিতে হলেও আকর্ষণীয়ভাবে এখনও কখনও উল্লেখ করা হয়নি।
select stuff(x,len(x),1,'')
অর্থাৎ,
take a string x
go to its last character
remove one character
add nothing
আমি @ বিল-হোইনিগের উত্তর পছন্দ করি; যাইহোক, আমি একটি সাবকোয়ারি ব্যবহার করছিলাম এবং আমি আটকে গেলাম কারণ রেভার্স ফাংশনে দুটি সেট বন্ধনী দুটি সেট দরকার ছিল। আমাকে কিছুটা সময় নিল!
SELECT
-- Return comma delimited list of all payment reasons for this Visit
REVERSE(STUFF(REVERSE((
SELECT DISTINCT
CAST(CONVERT(varchar, r1.CodeID) + ' - ' + c.Name + ', ' AS VARCHAR(MAX))
FROM VisitReason r1
LEFT JOIN ReasonCode c ON c.ID = r1.ReasonCodeID
WHERE p.ID = r1.PaymentID
FOR XML PATH('')
)), 1, 2, '')) ReasonCode
FROM Payments p
একটি নির্দিষ্ট কলামের শেষ এন অক্ষর ছাঁটাই করে রেকর্ডটি আপডেট করতে:
UPDATE tablename SET columnName = LEFT(columnName , LEN(columnName )-N) where clause
এটা চেষ্টা কর,
DECLARE @name NVARCHAR(MAX) SET @name='xxxxTHAMIZHMANI****'SELECT Substring(@name, 5, (len(@name)-8)) as UserNames
এবং আউটপুট থ্যামিজম্যানি মত হবে
declare @x varchar(20),@y varchar(20)
select @x='sam'
select
case when @x is null then @y
when @y is null then @x
else @x+','+@y
end
go
declare @x varchar(20),@y varchar(20)
select @x='sam'
--,@y='john'
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@x + ', ' ,'') +coalesce(@y+',','')
SELECT left(@listStr,len(@listStr)-1)