টি-এসকিউএল সমান না করার জন্য আমার কি! = বা <> ব্যবহার করা উচিত?


800

আমি দেখেছি SQLযে দুটিই ব্যবহার করে !=এবং <>এর জন্য সমান না । পছন্দের বাক্য গঠন কী এবং কেন?

আমি পছন্দ করি !=, কারণ <>আমাকে মনে করিয়ে দেয় Visual Basic



কোডের বহনযোগ্যতা। আপনার প্রয়োজনীয়তা যদি এএনএসআই এসকিউএল দ্বারা সহজেই পূরণ করা হয় তবে এটি ব্যবহার করা আরও ভাল। আপনি সমস্ত ডিবিতে একই কোড ব্যবহার করতে পারেন। যেমন। একটি এসকিউএল বইয়ের লেখক যিনি নমুনা কোড ব্যবহার করে বেসিক এসকিউএল চিত্রিত করতে চান।
বাষ্প

1
আমি একটি উদাহরণ যুক্ত করতে চাই যেখানে কেবল এএনএসআই এসকিউএল কোড থাকা কোনও সমস্যা হতে পারে - স্ট্যান্ডার্ড এসকিউএল NULLs কীভাবে বাছাই করে তা নিয়ন্ত্রণ করতে NULLS FIRST এবং NULLS সর্বশেষ বিকল্পগুলি সমর্থন করে, তবে T-SQL এই বিকল্পটিকে সমর্থন করে না support
বাষ্প

আবার খোলার দরকার নেই। চিহ্নিত প্রশ্নটি একটি সদৃশ, কেবল আরও একটি বিকল্প দ্বারা প্রসারিত NOT (A = B),।
TLama

@ স্টেয়াম, আপনার ঠিক কী উল্লেখ করা হচ্ছে তা আনশি স্কেলের কোন বছরের সংস্করণটি নির্দিষ্ট করা উচিত। এই সংস্করণগুলির কিছুতে এমনকি আপনার স্তরের সামঞ্জস্যতা বা স্ট্যান্ডার্ডের সঠিক অংশগুলিও নির্দিষ্ট করা প্রয়োজন। তাদের মধ্যে কে নালস প্রথম এবং নাল সর্বশেষ পরিচয় করিয়েছে?
গেরম্যান

উত্তর:


539

আপনি যদি এসকিউএল সার্ভার একা টি-এসকিউএল ব্যবহার করেন তবে প্রযুক্তিগতভাবে তারা একই কাজ করে। আপনি যদি এটি সঞ্চিত পদ্ধতিতে ব্যবহার করে থাকেন তবে একে অপরকে ব্যবহার করার কোনও কার্যকারিতার কারণ নেই। এটি পরে ব্যক্তিগত পছন্দ নেমে আসে। আমি <> ব্যবহার করতে পছন্দ করি কারণ এটি এএনএসআই অনুগত।

আপনি এখানে বিভিন্ন এএনএসআই স্ট্যান্ডার্ডের লিঙ্কগুলি খুঁজে পেতে পারেন ...

http://en.wikipedia.org/wiki/SQL


41
আমি ব্যবহৃত !=প্রতিটি সি-প্রভাবিত ভাষায় এর অস্তিত্বের কারণে আমি সর্বদা ব্যবহার পছন্দ করতাম এবং পাইথন ডকুমেন্টেশন বলে: "ফর্মগুলি <>এবং !=সমতুল্য; সি এর সাথে সামঞ্জস্যের জন্য, !=যেখানে !=নীচে উল্লেখ করা হয়েছে <>তাও গ্রহণযোগ্য। <>বানান লুপ্তপ্রায় বিবেচনা করা হয়। " তবে এসকিউএল পাইথন নয়!
আইয়েন স্যামুয়েল ম্যাকলিন বয়স্ক

24
আমি <> ব্যবহার করতে পছন্দ করি কারণ এটি আমাকে এক্সএমএলের স্মরণ করিয়ে দেয়। তবে এসকিউএল এক্সএমএল নয়!
রব গ্রান্ট

32
হ্যাঁ; মাইক্রোসফট নিজেদের ব্যবহার করার প্রস্তাব দিই <>উপর !=নয় ", টি-এসকিউএল দুই সমর্থন যখন মান আকারে পছন্দ করে নিন উদাহরণস্বরূপ" বিশেষভাবে 70-461 পরীক্ষার জন্য ANSI সম্মতি, যেমন মাইক্রোসফট প্রেস প্রশিক্ষণ কিট জন্য, "অনুসন্ধান মাইক্রোসফট SQL সার্ভার", তারা বলে "অপারেটর: <> এবং! = এর সমান
ম্যাট গিবসন

10
আমি <> পছন্দ করি কারণ এটি টাইপ করা সহজ।
ব্যবহারকারী 2023861

731

বেশিরভাগ ডাটাবেস সমর্থন করে !=(জনপ্রিয় প্রোগ্রামিং ভাষা) এবং <>(এএনএসআই)।

ডেটাবেস যা উভয় সমর্থন করে !=এবং <>:

  • মাইএসকিউএল 5.1: !=এবং<>
  • PostgreSQL 8.3: !=এবং<>
  • এসকিউএলাইট: !=এবং<>
  • ওরাকল 10 গ্রাম: !=এবং<>
  • মাইক্রোসফ্ট এসকিউএল সার্ভার 2000/2005/2008/2012/2016: !=এবং<>
  • আইবিএম ইনফর্মিক্স ডায়নামিক সার্ভার 10: !=এবং<>
  • ইন্টারবেস / ফায়ারবার্ড: !=এবং<>
  • অ্যাপাচি ডার্বি 10.6: !=এবং<>
  • সিবাজ অ্যাডাপটিভ সার্ভার এন্টারপ্রাইজ 11.0: !=এবং<>

ডেটাবেস যে ANSI মান অপারেটর সমর্থন একচেটিয়াভাবে :

  • আইবিএম ডিবি 2 ইউডিবি 9.5: <>
  • মাইক্রোসফ্ট অ্যাক্সেস 2010: <>

জাজানো ওআরএম এর NOT (a = b)পরিবর্তে (a <> b)বা এর মানচিত্রের ক্যোয়ারী (a != b)। এটি কি অভ্যন্তরীণভাবে একই?
ব্যবহারকারী

7
@ বাফার, তারা যুক্তিযুক্তভাবে একই, অর্থাৎ এটি একই সারিগুলির সমষ্টিটি মেলে বা বাদ দেয়। তবে কোনও নির্দিষ্ট আরডিবিএমএস ব্র্যান্ড এটি কার্যকর করে কিনা তা বাস্তবায়ন-নির্ভর। এটি বলেছিল, ব্র্যান্ডের ডাটাবেসের মধ্যে কোনও পার্থক্য থাকলে আমি অবাক হব।
বিল কারভিন

পার্শ্ব দ্রষ্টব্য: সি # তে লিনিকউ আপনাকে ব্যবহার করতে হবে! =
টম স্টিকেল

! = IBM DB2 LUW 10.5+ দ্বারা সমর্থিত
এস

10
সি # তে টমস্টিকেল লিনিক্যু এসকিউএল নয়।
ক্রেগ

109

'<>'থেকে এসকিউএল 92 মান এবং '!='একটি হল মালিকানা টি-এসকিউএল অপারেটর। এটি অন্যান্য ডাটাবেসেও পাওয়া যায় তবে এটি মানসম্পন্ন না হওয়ায় আপনাকে কেস-কেস-কেস ভিত্তিতে নিতে হবে।

বেশিরভাগ ক্ষেত্রে, আপনি কী ডাটাবেসে সংযোগ করছেন তা আপনি জানবেন তাই এটি আসলে কোনও সমস্যা নয়। সবচেয়ে খারাপ সময়ে আপনাকে একটি অনুসন্ধান করতে হবে এবং আপনার এসকিউএল প্রতিস্থাপন করতে হবে।


আমি দেখতে পেয়েছি যে মাইএসকিএল এসকিউএল এটিও ব্যবহার করে
বব দ্য জানিটর

3
আমরা কি স্ট্যান্ডার্ড ভাষার এ জাতীয় সম্প্রসারণকে মালিকানা হিসাবে বলতে পারি? এই মুহুর্তে, এটি প্রয়োজনীয় বলে মনে হচ্ছে মানটি আপডেট করা উচিত, বা কমপক্ষে উভয় বাক্য গঠনকে অনুমতি দেওয়া উচিত।
জোহান বুলি

3
@ জোহানবাউলে ভাল, এসকিউএল এর জন্য একটি লিখিত মান আছে এবং আমার জ্ঞানের !=কাছে এটির একটি অংশ নয়। যদিও সমস্ত ব্যবহারিক উদ্দেশ্যে এটি একটি ডিফাক্টো স্ট্যান্ডার্ড, আমাদের স্ট্যান্ডার্ড বৈশিষ্ট্যগুলি কী এবং কী নয় তা বিভ্রান্ত করা উচিত নয়।
অ্যাডাম লাসেক

43

এএনএসআই এসকিউএল স্ট্যান্ডার্ড <>"সমান নয়" অপারেটর হিসাবে সংজ্ঞা দেয়,

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt ( 5.2 <token> and <separator>)

!=এএনএসআই / এসকিউএল 92 স্ট্যান্ডার্ড অনুযায়ী কোনও অপারেটর নেই ।



24

এটি এসকিউএল সার্ভার নির্দিষ্ট। মঞ্জুর তিনি এসকিউএল সার্ভার সম্পর্কে জিজ্ঞাসা করেছেন, তবে আপনি কি এএনএসআই সুনির্দিষ্ট রেফারেন্সটি দেখতে পাচ্ছেন যে আমরা আমাদের মধ্যে যারা এই ধরণের জিনিসটি জানতে পছন্দ করি তার জন্য এটি পোর্টেবল হওয়ার গ্যারান্টিযুক্ত কিনা?
জোয়েল কোহোর্ন

6
@ জোয়েল কোহোর্ন, যদি আপনি খুব আপনার টি-এসকিউএল কোড "<>" এবং "! =" পোর্ট করেন তবে আপনার উদ্বেগের মধ্যে সবচেয়ে কম হবে !!
কেএম

1
পোর্টিং কোনও সমস্যা নয় - এটি যখন বিকাশকারী হিসাবে, আপনাকে পরিবেশের মধ্যে পিছনে পিছনে যেতে হবে। ধারাবাহিকতা ভাল।
মার্ক রান্সম

20

মনে হচ্ছে মাইক্রোসফ্ট নিজেরাই তাদের টেবিলের সীমাবদ্ধতার প্রমাণ হিসাবে পছন্দ <>করে !=। আমি ব্যক্তিগতভাবে ব্যবহার করতে পছন্দ !=করি কারণ আমি স্পষ্টভাবে "সমান নয়" হিসাবে পড়েছি তবে আপনি যদি [field1 != field2]এটি প্রবেশ করিয়ে বাধা হিসাবে সংরক্ষণ করেন, পরের বার আপনি যখন এটি জিজ্ঞাসা করবেন তখন এটি প্রদর্শিত হবে [field1 <> field2]। এটি আমাকে বলে যে এটি করার সঠিক উপায় <>


15

!=, অ-এএনএসআই হওয়া সত্ত্বেও, পাঠযোগ্য ভাষা হিসাবে এসকিউএল-এর প্রকৃত চেতনায় আরও বেশি। এটি চিৎকার করে না সমান। <>বলেন এটি আমার কাছে (এর চেয়ে কম, এর চেয়েও কম) যা কেবল অদ্ভুত। আমি জানি উদ্দেশ্যটি এটি যেহেতু সমান নয় তার চেয়ে কম বা বৃহত্তর, তবে এটি সত্যিই সাধারণ কিছু বলার একটি জটিল উপায়।

আমাকে কিছু দীর্ঘ এসকিউএল ক্যুয়েরি নিতে হয়েছিল এবং মূর্খ কারণগুলির পুরো গুচ্ছের জন্য আমি তাদের XML ফাইলে স্নেহ সহকারে স্থাপন করতে হয়েছিল I

এক্সএমএল মোটেও কমছে না বলে যথেষ্ট হয়েছে <>এবং আমি !=নিজের বিরুদ্ধে কঠোর আচরণ করার আগে আমাকে সেগুলিতে পরিবর্তন করতে হয়েছিল এবং নিজেকে পরীক্ষা করতে হয়েছিল।


6
কেন শুধু সিডিএটা হবে না? আপনার ক্যোয়ারিতে এক্সএমএল থাকলে কী হবে?
জানুস ট্রোলসেন

12

আপনি টি-এসকিউএল এ যা পছন্দ করতে পারেন তা ব্যবহার করতে পারেন। ডকুমেন্টেশন বলছে যে তারা উভয়ই একইভাবে কাজ করে। আমি পছন্দ করি !=, কারণ এটি আমার (সি / সি ++ / সি # ভিত্তিক) মনের সাথে "সমান নয়" পড়ে তবে ডাটাবেস গুরুরা পছন্দ করে বলে মনে হয় <>


10

আমি বুঝতে পারি যে সি সিনট্যাক্সটি !=এসকিউএল সার্ভারে রয়েছে এর ইউনিক্স heritageতিহ্যের কারণে (সাইবাস এসকিউএল সার্ভারের দিনগুলিতে, মাইক্রোসফ্ট এসকিউএল সার্ভার .5.৫ পূর্ববর্তী)।


7

এক বিকল্প চেয়ে NULLIF অন্যান্য অপারেটর ব্যবহার করতে হবে <>বা !=যা আয় শূন্য যদি দুটি আর্গুমেন্ট সমান মাইক্রোসফট ডক্সে NULLIF । সুতরাং আমি বিশ্বাস করি যেখানে ক্লজটি নীচে <>এবং এর জন্য সংশোধন করা যেতে পারে !=:

NULLIF(arg1, arg2) IS NOT NULL

যেমনটি আমি পেয়েছি যে ব্যবহার করে <>এবং !=কিছু ক্ষেত্রে তারিখের জন্য কাজ করে না। সুতরাং উপরোক্ত অভিব্যক্তি ব্যবহার করা প্রয়োজনীয় করে তোলে।


6
আমি নিশ্চিত নই যে এই ফাংশনটি <>সমস্ত কোণার ক্ষেত্রে সূচক ব্যবহারের সাথে পাশাপাশি সম্পাদন করবে । তদ্ব্যতীত পাঠযোগ্যতা অবশ্যই আরও খারাপ ...
লুকাশ এডার

আমি উত্তরে উল্লিখিত হিসাবে, এটি আমার জন্য ২০১৪ সালের তারিখের ক্ষেত্রগুলিতে কাজ করেছিল sure ক্লজ / শর্তটি কী ছিল যা অন্যান্য উত্তরগুলিকে সীমাবদ্ধ করেছিল তা নিশ্চিত নয়, তবে কিছু অংশের দিকে তাকালে মনে হয় এটি অন্যকেও সাহায্য করবে।
জিতেন্দ্রপুরোহিত

1

আমি ব্যবহার পছন্দ !=পরিবর্তে <>কারণ কখনও কখনও আমি ব্যবহার <s></s>লেখ এসকিউএল কমান্ড সিনট্যাক্স। !=এই ক্ষেত্রে সিনট্যাক্স ত্রুটিগুলি এড়ানোর জন্য ব্যবহার করা আরও সহজ hand


-6

তারা উভয়ই টি-এসকিউএল-তে গৃহীত হয়। তবে, মনে হচ্ছে ব্যবহারের <>চেয়ে অনেক দ্রুত কাজ!= করে । আমি কেবল একটি জটিল ক্যোয়ারী চালিয়েছি যা ব্যবহার করছিল !=এবং এটি চালাতে প্রায় 16 সেকেন্ড সময় নিয়েছিল। আমি এগুলিতে পরিবর্তন করেছি <>এবং ক্যোয়ারী চালাতে এখন প্রায় 4 সেকেন্ড সময় নেয়। এটি একটি বিশাল উন্নতি!


20
আপনি যদি এসকিউএল সার্ভারে একের পর এক দুটি অনুরূপ ক্যোয়ারী চালনা করেন তবে এটি সম্ভবত মেমরিতে ডেটা ক্যাশে করবে এবং অনুরূপ প্রশ্নের জন্য অনুকূলিত হবে ized যদি আপনি এটি বিপরীত ক্রমে করেন তবে আপনি বিপরীত ফলাফলটি পেতে পারেন!
কোডমনকি

2
এটিও ভুল, তাদের দু'জন অপারেটর নেই যেগুলি ঠিক একই রকম কাজ করেছিল এবং একজন ধীর "জাস্ট" কারণ "। একই ক্যোয়ারীটি বিভিন্ন কার্যকরকরণের সময় কেন উত্পাদন করে তা নিয়ে অনেক অবদানকারী কারণ রয়েছে।
এলিয়ট চান্স

-11

যদিও তারা একইভাবে কাজ করে, এর !=অর্থ হুবহু "সমান নয়", এর <>অর্থ হল সঞ্চিত মানের চেয়ে বড় এবং কম।

বিবেচনা করুন >=বা <=, এবং আপনার সূচীগুলিতে ক্যোয়ারিতে ফ্যাক্টরিং করার সময় এটি বোধগম্য হবে ...<> কিছু ক্ষেত্রে (ডান সূচক সহ) দ্রুত চলবে, তবে অন্য কিছু ক্ষেত্রে (সূচক মুক্ত) তারা ঠিক একই রকম চলবে।

এটাও কিভাবে আপনার ডাটাবেস সিস্টেম মান সার্চ উপর নির্ভর করে !=এবং <>। ডাটাবেস সরবরাহকারী এটিকে কেবল শর্টকাট করে তাদের একই কাজ করতে পারে, সুতরাং কোনও উপকার নেই isn't পোষ্টগ্রিসএসকিউএল এবং এসকিউএল সার্ভার এটি শর্টকাট করে না; এটি উপরে প্রদর্শিত হিসাবে এটি পড়া হয়।


3
আপনার বক্তব্যটির জন্য কি কোনও সমর্থনকারী রেফারেন্স রয়েছে? উভয় অপারেটর পোস্টগ্র্রেএসকিউএল , ওরাকল এবং মাইএসকিউএলে ঠিক একই রকম বলে মনে হচ্ছে ।
ঘোস্টগাম্বলারের

8
এটি সম্পূর্ণরূপে ভুল, আপনার মনে হতে পারে "সঞ্চিত মানের চেয়ে বেশি এবং কম" আপনি যখন মনে মনে এই অক্ষরগুলি একত্রিত করেন তবে লেক্সারের কাছে এটি টোকেনকে উপস্থাপন করার অন্য উপায়।
এলিয়ট চান্স

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