আমি একই সমস্যা পেয়েছি এবং নির্ধারণ করেছি যে এই সমস্যাটি দেখা দেয় কারণ এসকিউএল সার্ভারটি একটি অভিন্ন পদ্ধতিতে রূপান্তরিত অক্ষরের সাথে তুলনা করে না। আমার পরীক্ষায়, আমি দেখতে পেয়েছি যে রূপান্তরিত অক্ষরের কিছু তুলনা যেমন বিস্মরণবোধক পয়েন্ট, ধরণের রূপান্তর ত্রুটিগুলি ফিরিয়ে দেবে, অন্যদিকে রূপান্তরিত অক্ষরের যেমন তুলনামূলকভাবে স্থানটি সীমার বাইরে থাকবে তা নির্ধারিত হবে।
এই নমুনা কোডটি বিভিন্ন সম্ভাব্য পরিস্থিতিগুলি পরীক্ষা করে এবং নেস্টেড REPLACE বিবৃতি ব্যবহার করে একটি সমাধান উপস্থাপন করে। REPLACE নির্ধারণ করে যে স্ট্রিংয়ে এমন কোনও অক্ষর রয়েছে যা অঙ্ক বা স্ল্যাশ নয় এবং যদি উপস্থিত থাকে তবে স্ট্রিংটির দৈর্ঘ্য শূন্যের চেয়ে বেশি হবে, যার ফলে সেখানে 'খারাপ' অক্ষর রয়েছে এবং তারিখটি অবৈধ রয়েছে ating ।
DECLARE @str varchar(10)
SET @str = '12/10/2012'
IF convert(int, substring(@str,4,2)) <= 31 AND convert(int, substring(@str,4,2)) >= 1
PRINT @str+': Passed Test'
ELSE PRINT @str+': Failed Test'
GO
DECLARE @str varchar(10)
SET @str = '12/10/2012'
PRINT 'Number of characters in ' + @str + ' that are not numerals or a slash (0 means the date is valid; all values greater than 0 indicate a problem): ' + convert(varchar(5),len(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(@str,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''), '8',''),'9',''),'/',''),' ','+')))
PRINT ''
GO
DECLARE @str varchar(10)
SET @str = '12/!0/2012'
IF convert(int, substring(@str,4,2)) <= 31 AND convert(int, substring(@str,4,2)) >= 1
PRINT @str+': Passed Test'
ELSE PRINT @str+': Failed Test'
GO
DECLARE @str varchar(10)
SET @str = '12/!0/2012'
PRINT 'Number of characters in ' + @str + ' that are not numerals or a slash (0 means the date is valid; all values greater than 0 indicate a problem): ' + convert(varchar(5),len(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(@str,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''), '8',''),'9',''),'/',''),' ','+')))
PRINT ''
GO
DECLARE @str varchar(10)
SET @str = '12/ /2012'
IF convert(int, substring(@str,4,2)) <= 31 AND convert(int, substring(@str,4,2)) >= 1
PRINT @str+': Passed Test'
ELSE PRINT @str+': Failed Test'
GO
DECLARE @str varchar(10)
SET @str = '12/ /2012'
PRINT 'Number of characters in ' + @str + ' that are not numerals or a slash (0 means the date is valid; all values greater than 0 indicate a problem): ' + convert(varchar(5),len(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(@str,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''), '8',''),'9',''),'/',''),' ','+')))
আউটপুট: