ওরাকলে স্ট্রিং কনটেনটেশন অপারেটর কী?


172

ওরাকল এসকিউএল এর স্ট্রিং কনটেনটেশন অপারেটর কী?

আমার কি সাবধান থাকা উচিত এমন কোনও "আকর্ষণীয়" বৈশিষ্ট্য আছে?

(এটি সুস্পষ্ট বলে মনে হচ্ছে, তবে আমি এটি জিজ্ঞাসা করে কোনও পূর্ববর্তী প্রশ্ন খুঁজে পাইনি)।


উত্তর:


237

এটি ||উদাহরণস্বরূপ:

select 'Mr ' || ename from emp;

কেবলমাত্র "আকর্ষণীয়" বৈশিষ্ট্যটি যা আমি ভাবতে পারি তা হ'ল এটি 'x' || nullপ্রত্যাবর্তন 'x', nullআপনি সম্ভবত প্রত্যাশা করতে পারেন না।


3
আমি একটি যৌক্তিক অপারেশন থেকে নাল প্রত্যাশা করব ... নিশ্চিত না যে আমি কখনও স্ট্রিং অপারেশন সম্পর্কে ভেবেছিলাম।

1
অবশ্যই ওরাকল নাল এবং '' কে একই হিসাবে বিবেচনা করে এবং 'x' || '' = 'এক্স' বোঝায়। তবে আপনি যদি শূন্যটিকে "অপরিজ্ঞাত" বা "অজানা" মনে করেন তবে 'এক্স' || নাল 'x' দিয়ে শুরু হওয়া যে কোনও স্ট্রিং হতে পারে এবং তাই এটি নিজেই "অজানা"!
টনি অ্যান্ড্রুজ

4
||ওরাকলে কোনও লজিকাল অপারেটর নয়, সুতরাং, 'x'||nullফিরে আসে x
Iľja

3
@ipip: আমি দ্বিধান্বিত - যদি "লজিক্যাল অপারেটর" আপনি কি এটা বোঝাতে অপারেটার মত AND, NOTইত্যাদি তারপর অবশ্যই ||একটি লজিক্যাল অপারেটর নয়। কিন্তু 'x'||nullফিরে আসার কারণে এর কী কী আছে x? n+nullনাল ফেরায়, সুতরাং +একটি লজিকাল অপারেটর?
টনি অ্যান্ড্রুজ

2
সংযুক্তকরণের মধ্যে নাল এর ওরাকল এর হ্যান্ডলিং এটি SQL92 বৈশিষ্ট (এবং Postgres) এর ভিন্ন অ মান - দেখুন postgresql.org/message-id/921.1144705646@sss.pgh.pa.us
beldaz

61

কনক্যাটও রয়েছে, তবে এটি বেশি ব্যবহৃত হয় না

select concat('a','b') from dual;

6
এটি || এর চেয়ে ভাল প্রতীক। ব্যবহার || || অন্যান্য ভাষার ব্যবহার অনুসারে কেবল বিভ্রান্তিকর।
জর্দান

17
স্বচ্ছতার জন্য রাজি, কিন্তু || আরও 2 টি ক্ষেত্র সহজেই মঞ্জুরি দেওয়ার সুবিধা রয়েছে
প্যাট্রিক হোনোরেজ

3
CONCATঅন্যান্য ডিবিএমএস (কমপক্ষে মাইএসকিউএল এবং পোস্টগ্রিস) এর সাথেও সামঞ্জস্যপূর্ণ।
lapo

1
অদ্ভুত যে এএনএসআই এসকিউএল কমিটির ক্ষেত্রে এটি ঘটেনি যে কারও পক্ষে দু'টিরও বেশি জিনিসের সাথে যুক্ত হওয়া প্রয়োজন। (একই সাথে ওরাকলে প্রতিভা অর্জনকারীরাও এসেছেন nvl()))
উইলিয়াম রবার্টসন

1
CONCATমাইক্রোসফ্ট এসকিউএল সার্ভার ২০১২ এবং এর পরেও উপলব্ধ । কনক্যাট যদিও নন-স্ট্যান্ডার্ড, আপনি যদি নিজের কোডটি পোর্টেবল করতে চান তবে অবশ্যই যাওয়ার উপায়। ( ||প্রকৃত এএনএসআই স্ট্যান্ডার্ড অপারেটর, যদিও আপনি এটির সমর্থন দেখে এটি জানতেন না!)
ম্যাট গিবসন

11

আমি 2 টি স্ট্রিং, এবং || যখন এই স্ট্রিংগুলি 2 এর বেশি হয়:

select concat(a,b)
  from dual

অথবা

  select 'a'||'b'||'c'||'d'
        from dual

2
দুঃখিত আমি বুঝতে পারি যে এটি 2 বছর আগে ছিল, তবে আপনি কেন concat(a,b)বেশি পছন্দ করবেন a||b?
টনি অ্যান্ড্রুজ

|| আরও খাটো, আরও নমনীয় এবং সহজ। তার নির্বাচিত বিবৃতি দেখুন।
JoshYates1980

6
DECLARE
     a      VARCHAR2(30);
     b      VARCHAR2(30);
     c      VARCHAR2(30);
 BEGIN
      a  := ' Abc '; 
      b  := ' def ';
      c  := a || b;
 DBMS_OUTPUT.PUT_LINE(c);  
   END;

আউটপুট :: Abc Def


1

ব্যবহার করা CONCAT(CONCAT(,),)আমার জন্য কাজ যখন আরো দুই স্ট্রিং concatenating।

আমার সমস্যার জন্য তারিখের স্ট্রিংগুলির সাথে কাজ করা প্রয়োজন (কেবল) এবং নিম্নলিখিতটি তৈরি YYYYMMDDকরা YYYY-MM-DD(যেমন তারিখের বিন্যাসে রূপান্তর না করে):

CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.