'কনক্যাট' কোনও স্বীকৃত অন্তর্নির্মিত ফাংশনটির নাম নয়


24

একজন ক্লায়েন্ট জানিয়েছে যে তারা এসকিউএল সার্ভার ২০১২ তে চলছে, এবং আমরা চূড়ান্ত বিতরণের আগে পরীক্ষার জন্য কিছু পরীক্ষার প্রশ্ন সরবরাহ করেছি, তবে:

'কনক্যাট' কোনও স্বীকৃত অন্তর্নির্মিত ফাংশনটির নাম নয়।

আমি বুঝতে পেরেছি যে CONCAT()এসকিউএল সার্ভার ২০১২-তে প্রবর্তিত একটি নতুন অন্তর্নির্মিত ফাংশন, যা সবদিকই ভাল এবং ভাল, তবে "ক্যোয়ারি কার্যকরকারী ব্যবহারকারী নাও করতে পারেন" এর আড়ালে এই 2008R2 কে সামঞ্জস্যপূর্ণ করার জন্য আমাকে আমার পরিবর্তনটি রোল করতে বলা হয়েছে কার্যকর করার জন্য লেনদেন-এসকিউএল অনুমতি রয়েছে। " সুতরাং আমি কেবল আমার বক্তব্যটি প্রমাণ করছি যে ক্লায়েন্টের সম্ভবত এসইকিউএল সার্ভারের আলাদা আলাদা সংস্করণ রয়েছে যা তারা প্রডির চেয়ে ডিইভিতে ইনস্টল করে।

আমি বিশেষত SELECT/EXECUTEবিল্ট-ইন স্কেলারের মূল্যবান ফাংশনগুলির জন্য অনুমতি অস্বীকার করার কোনও তথ্য খুঁজে পাই না , তবে এটি কি সম্ভব, এবং যদি ব্যবহারকারী এখনও একই ত্রুটির পাঠ্য পায়?


যদি কনক্যাট কাজ না করে থাকে তবে এটি ব্যবহার করে দেখুনSELECT (c.FirstName+','+c.LastName) AS FULLNAME FROM graduatejob c;
নীলাচল শেঠি

কনক্যাট দশমিক প্রকারের কনক্যাটকে সমর্থন করে (আইডি + '_' + অন্যান্যআইডি), আইডি ইন্ট টাইপ হতে পারে।
ঝাং

পুরানো সংস্করণগুলিতে, পরিবর্তে এটি ব্যবহার করুন:DECLARE @msg VARCHAR(200) = 'Shrink file completed. Target Size: ' + @TargetSize + ' MB. Timestamp: ' + CURRENT_TIMESTAMP;
জ্যাক হুইটকার

উত্তর:


21

CONCATএসকিউএল সার্ভারে চালু হয়েছিল 2012; এটি এসকিউএল সার্ভার 2008 আর 2 এ কাজ করার কোনও উপায় নেই। ডকুমেন্টেশন থেকে :

এখানে চিত্র বর্ণনা লিখুন

সামঞ্জস্যতা স্তরের সাথেও এটি 2012+ এ ব্যর্থ হওয়ার কোনও উপায় নেই। সুতরাং আপনার লোকদের SELECT @@VERSION;উভয় সার্ভারে চেক করতে; আপনি এটি খুঁজে পাবেন যেখানে CONCATএটি ব্যর্থ হয়েছে <১১. আপনার কোডটি পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্য করার জন্য আপনাকে স্ট্যান্ডার্ড স্ট্রিং কনটেনটেশন অপারেটর ( +) ব্যবহার করতে হবে । আমি আপনাকে স্কেলের ফাংশন এই কাজ করতে হবে, যদি না আপনি সর্বদা ব্যবহার জানি না সঠিক ইনপুট স্ট্রিং একই সংখ্যক এবং আপনি ব্যবহার করতে আপনার কোড পরিবর্তন dbo.CONCAT()পরিবর্তে CONCAT()(সেখানে পরিস্থিতিতে যেখানে এটা গুরুত্বপূর্ণ হবে, প্লাস আপনার ফাংশন কিছু হয়, তাহলে নেটিভ না করে, আপনি / যখন আপগ্রেড করবেন সামঞ্জস্যপূর্ণ আচরণ চান)। সুতরাং আমি যে পদ্ধতির সুপারিশ করব না। আপনার যোগ করার প্রয়োজন হতে পারেNULL হ্যান্ডলিং এবং অন্যান্য ছোটখাটো পরিবর্তন (আপনার বিদ্যমান স্ক্রিপ্টটি কীভাবে ঠিক পরিবর্তন করতে হয় তা আপনাকে জানাতে অসম্ভব, যদি আমরা এটি দেখতে না পাই)


ধন্যবাদ, হারুন কোডটি পরিবর্তন করতে তুচ্ছ, কেননা একটি কনফিট () সুনির্দিষ্টভাবে একটি এসপি_এক্সেকিউটসকিউএল ডায়নামিক এসকিউএল কল করার আগে কিছু স্ট্রিংয়ে যোগ দিতে ব্যবহৃত হয়েছিল। আমি সত্যিই এটি নিশ্চিত করতে চেয়েছিলাম যে এসকিউএল সার্ভার ২০১২
কনক্যাট

1
@ বেকস, ব্যবহারকারীদের ব্যবহারের সক্ষমতা অস্বীকার করার কোনও উপায় আমি জানি না CONCAT(), না। যদিও আমি ২০০৮ আর 2 তে কোডটি তৈরি করতে আপনার যা করতে হবে তা গ্রহণের বিষয়টি আমি পুরোপুরি অনুসরণ করি না। আপনি এটি যোগ করতে হবে না, অপসারণ CONCAT() করতে হবে।
অ্যারন বার্ট্র্যান্ড

1
হ্যাঁ, আমি বুঝতে পারি যে কীভাবে কোডটি 2008 আর 2 এর সাথে সামঞ্জস্য করা যায়, এটি তুচ্ছ। কেউ DENYএই ফাংশনে অ্যাক্সেস করতে পারবেন না তা নিশ্চিত করার জন্য ধন্যবাদ ।
মৌমাছির

কংক্রিটটি ++ এ পরিবর্তন করার সময় আপনাকে অবশ্যই নিশ্চিত করতে হবে যে মানগুলি সংঘবদ্ধ হওয়ার সাথে সাথে শুরু হওয়া স্ট্রিংগুলি নিশ্চিত করতে হবে, যদি আপনার কোনও সংখ্যাসূচক ক্ষেত্র থাকে তবে এটি সেগুলি যুক্ত করার চেষ্টা করবে (এবং ব্যর্থ হয় কারণ একটি স্ট্রিং কোনও অন্তর্ভুক্ত নয়) তাই যদি একটি সংখ্যার ক্ষেত্র রয়েছে (প্রকার) নিশ্চিত করুন যে আপনি এটিকে প্রথমে স্ট্রিংয়ে রূপান্তর / কাস্ট করেছেন
স্ট বোভ

3

আপনি ওডিবিসি কনক্যাট ফাংশনটি এর মতো ব্যবহার করতে পারেন:

SELECT {fn CONCAT('foo ', 'test') }

এটির সাথে সমস্যা হ'ল এই ফাংশনটি আপনাকে একবারে দুটি পরামিতি দেয়। সুতরাং যদি না আপনি এইরকম দুটির বেশি ব্যবহার করতে চান:

SELECT {fn CONCAT('foo ', {fn CONCAT('test ', 'buddy')}) }

আপনি কেবল '+' অপারেটর ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.