টি-এসকিউএল স্টেটমেন্টগুলিতে এন উপসর্গটির অর্থ কী এবং আমি কখন এটি ব্যবহার করব?


352

আমি কিছু Tোকানো টি-এসকিউএল কোয়েরিতে উপসর্গ এন দেখেছি। অনেকে Nএকটি সারণীতে মান সন্নিবেশ করার আগে ব্যবহার করেছেন ।

আমি অনুসন্ধান করেছিলাম, তবে Nটেবিলের মধ্যে কোনও স্ট্রিং beforeোকানোর আগে আমি এর উদ্দেশ্য কী তা বুঝতে পারি না ।

INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),

এই 'এন' উপসর্গটি কী উদ্দেশ্যে কাজ করে এবং কখন এটি ব্যবহার করা উচিত?

উত্তর:


415

এটি স্ট্রিংটিকে nvarcharডেটা প্রকারের পরিবর্তে ঘোষণা করছেvarchar

আপনি ট্রান্সঅ্যাক্ট-এসকিউএল কোডটি দেখেছেন যা কোনও এন উপসর্গ ব্যবহার করে স্ট্রিংগুলি পাস করে। এটি সূচিত করে যে পরবর্তী স্ট্রিং ইউনিকোডে রয়েছে (এন আসলে জাতীয় ভাষার অক্ষর সেট হিসাবে দাঁড়িয়েছে)। যার অর্থ আপনি CHAR, VARCHAR বা TEXT এর বিপরীতে এনসিএইচআর, এনভিচারার বা এনটিএক্সটি মান পাস করছেন।

মাইক্রোসফ্ট থেকে উদ্ধৃতি :

প্রিফিক্স ইউনিকোড অক্ষর স্ট্রিং ধ্রুবক N অক্ষর দ্বারা স্থির হয়। এন উপসর্গ ব্যতীত স্ট্রিংটি ডাটাবেসের ডিফল্ট কোড পৃষ্ঠাতে রূপান্তরিত হয়। এই ডিফল্ট কোড পৃষ্ঠাটি নির্দিষ্ট অক্ষরগুলি নাও চিনতে পারে


আপনি যদি এই দুটি ডেটা ধরণের পার্থক্য জানতে চান তবে এই এসও পোস্টটি দেখুন:

ভারচর এবং নাভারচরের মধ্যে পার্থক্য কী?


1
@ কার্ট এর অর্থ আমি Nযখন নিম্নলিখিত ডাটাটাইপগুলি ব্যবহার করছি তখনই আমি ব্যবহার করব CHAR, VARCHAR or TEXT?? কারণ `এনসিএইচএআর, এনভিচারার বা এনটিএসএআরটি in সহজাতভাবে ইউনিকোড সঞ্চয় করে রাখে আমার এটিকে আলাদাভাবে যুক্ত করার দরকার নেই .... এটি কি সত্য?
প্রথমেশ

@ প্রীতিশ - কেবলমাত্র যদি আপনি কোনও ডিফল্ট কোড পৃষ্ঠা ব্যবহার করেন যা উপরের সাহসী পাঠ্যের মতো সেই ইউনিকোড অক্ষরগুলি স্বীকৃতি নাও দিতে পারে।
টড

5
লিংক @Curt databases aspfaq comঅত্যন্ত সন্দেহজনক ওয়েবসাইটের পুনঃনির্দেশ ( fkref com, za1 zeroredirect1 com, i0z13 trackvoluum com), পর্নোগ্রাফি, দূষিত সাইট এবং স্প্যাম URL গুলি যেমন আমাদের কর্পোরেট ফায়ারওয়াল দ্বারা চিহ্নিত করা হয়েছে পারে। আমি এস্পফাক.কমের মালিকের সাথে যোগাযোগ করেছি এবং লিঙ্কটি সরিয়ে ফেলতে উত্তর সম্পাদনা করেছি।
জুমমে

21

N'উপসর্গটির সাথে ঘটে যাওয়া একটি বিরক্তিকর জিনিসটি আমি আপনাকে বলি - আমি এটি দুটি দিন ঠিক করতে পারিনি was

আমার ডাটাবেস সংযোগটি এসকিউএল_ল্যাটিন 1_ জেনারাল_সিপি 1_সিআই_এএস

এটিতে মাই কুল 1 নামে একটি কলামযুক্ত একটি টেবিল রয়েছে । এটি একটি Nvarchar

এই ক্যোয়ারীটি বিদ্যমান মানের সাথে সঠিক মানটির সাথে ব্যর্থ হয়েছে

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = 'ESKİ'  

// 0 result

উপসর্গ এন '' ব্যবহার করে এটি সংশোধন করে

SELECT TOP 1 * FROM myTable1 WHERE  MyCol1 = N'ESKİ'  

// 1 result - found!!!!

কেন? কারণ ল্যাটিন 1_জেনারেলের বড় বিন্দু নেই İ এ কারণেই এটি অনুমান করি।


8

1. সম্পাদনা:

অনুমান করুন যেখানে ধারাটি এর মতো:

WHERE NAME='JON'

যদি NAME কলামটি এনভারচর বা এনসিআর ব্যতীত অন্য কোনও ধরণের হয় তবে আপনার এন উপসর্গটি নির্দিষ্ট করা উচিত নয়। যাইহোক, যদি NAME কলামটি nvarchar বা nchar প্রকারের হয় তবে আপনি যদি এন উপসর্গটি নির্দিষ্ট না করেন তবে 'JON' অ-ইউনিকোড হিসাবে গণ্য হবে। এর অর্থ হল NAME কলাম এবং স্ট্রিং 'JON' এর ডেটা ধরণ আলাদা এবং তাই এসকিউএল সার্ভার সুস্পষ্টভাবে একটি অপারেন্ডের ধরণটিকে অন্যটিতে রূপান্তরিত করে। যদি এসকিউএল সার্ভার আক্ষরিক প্রকারটিকে কলামের ধরণে রূপান্তর করে তবে কোনও সমস্যা নেই, তবে এটি অন্য উপায়ে করলে পারফরম্যান্স ক্ষতিগ্রস্থ হবে কারণ কলামটির সূচী (যদি উপলব্ধ থাকে) না ব্যবহৃত হয়।

২. চরিত্র সেট:

যদি কলামটি এনভারচর বা এনসিআর টাইপ করে থাকে তবে WHERE মানদণ্ড / আপডেট / INSERT ধারাটিতে অক্ষরের স্ট্রিং নির্দিষ্ট করার সময় সর্বদা উপসর্গ এন ব্যবহার করুন। যদি আপনি এটি না করেন এবং আপনার স্ট্রিংয়ের একটি অক্ষর ইউনিকোড (যেমন আন্তর্জাতিক অক্ষরগুলির উদাহরণ - ā) হয় তবে এটি ব্যর্থ হবে বা ডেটা দুর্নীতির শিকার হবে।


4

মানটি এনভারচর ধরণের হিসাবে ধরে নেওয়া যায় কেবলমাত্র আমরা এন '' ব্যবহার করছি

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