( আপনি SQL সার্ভার 2012 অথবা ঊর্ধ্বতন সংস্করণ ব্যবহার করেন তাহলে, @ wBob দেখি দয়া উত্তর একটি ক্লিনার পদ্ধতির যদি আপনি এসকিউএল সার্ভার 2008 R2 বা পুরোনো ব্যবহার করছেন। পদ্ধতির নিচে আমার উত্তর রূপরেখা শুধুমাত্র প্রয়োজন হয়। )
NUMERICকমা, কাল, বা স্থান নির্বিশেষে রূপান্তরিত করার সময় আপনার হাজার হাজার বিভাজকের দরকার নেই (বা চান) , তাই প্রথমে এগুলি থেকে মুক্তি পান। তারপরে কমাটিকে একটি পিরিয়ড / দশমিক হিসাবে রূপান্তর করুন এবং আপনার কাজ শেষ হয়েছে:
SELECT CONVERT(NUMERIC(10, 2),
REPLACE(
REPLACE('7.000,45', '.', ''),
',', '.'
)
) AS [Converted];
রিটার্নস:
7000.45
সম্পূর্ণতার খাতিরে, আমার উল্লেখ করা উচিত যে আমি চেষ্টা করেছিলাম:
SET LANGUAGE Greek;
কনভার্টের জন্য বিভিন্ন ফর্ম্যাট শৈলীর দিকে তাকানো , তবে এখানে কিছুই প্রয়োগ হয় না।
বিন্যাসে ফাংশন, কিন্তু ইনপুট টাইপ একটি সাংখ্যিক বা তারিখ / সময় / DATETIME মান (যে এবং এটি SQL সার্ভার 2012 সালে চালু করা হয়, তাই এসকিউএল সার্ভার 2008 R2 প্রযোজ্য বা পুরোনো নয়) হতে হবে।
আর কিছুই মনে হয়নি কাজ করল। আমি দুটি REPLACEকলের চেয়ে আরও মার্জিত কিছু খুঁজে পাওয়ার আশা করছিলাম , তবে এখনও পর্যন্ত এর মতো ভাগ্য নেই।
এছাড়াও, কেবল উল্লেখ করার জন্য, খাঁটি টি-এসকিউএল সমাধান নয়, এটি এসকিউএলসিআরআরের মাধ্যমেও সম্পন্ন করা যেতে পারে। এবং, একটি প্রাক-সম্পন্ন ফাংশন রয়েছে যা এসকিউএল # লাইব্রেরিতে এটি করে (যা আমি লিখেছিলাম) স্ট্রিং_ট্রিপর্সটোডেসিমাল নামে । এই ফাংশনটি ফ্রি সংস্করণে উপলভ্য এবং এসকিউএল সার্ভারের প্রতিটি সংস্করণে এসকিউএল সার্ভার 2005 থেকে শুরু করে:
SELECT SQL#.String_TryParseToDecimal('7.000,45', 'el-GR');
রিটার্নস:
7000.45000000000000000000