স্ক্লাইটে প্যাডিং সহ স্ট্রিংগুলি কীভাবে সংযুক্ত করতে হয়


213

স্ক্লাইট টেবিলটিতে আমার তিনটি কলাম রয়েছে:

    Column1    Column2    Column3
    A          1          1
    A          1          2
    A          12         2
    C          13         2
    B          11         2

আমাকে নির্বাচন করতে হবে Column1-Column2-Column3(যেমন A-01-0001)। আমি প্রতিটি কলামে একটি দিয়ে প্যাড করতে চাই-

আমি এসকিউএলাইটের সাথে একটি শিক্ষানবিস, যে কোনও সাহায্যের প্রশংসা করা হবে


উত্তর:


382

||অপারেটর "CONCATENATE" - এটা একসঙ্গে যোগদান করে তার operands দুই স্ট্রিং।

Http://www.sqlite.org/lang_expr.html থেকে

প্যাডিংয়ের জন্য, আপাতদৃষ্টিতে প্রতারণামূলক উপায়টি আমি ব্যবহার করেছি আপনার টার্গেটের স্ট্রিং দিয়ে শুরু করা, '0000' বলুন, '0000423' কনটেনেট করুন, তারপরে '0423' এর জন্য সাবস্ট্রট (ফলাফল, -4, 4)।

আপডেট: দেখে মনে হচ্ছে এসকিউএলাইটে "এলপ্যাড" বা "আরপ্যাড" এর কোনও স্থানীয় প্রয়োগ নেই, তবে আপনি এখানে অনুসরণ করতে পারেন (মূলত আমি যা প্রস্তাব করেছি) এখানে: http://vysimple.com/2010/01/12/sqlite-lpad -rpad ফাংশনের /

-- the statement below is almost the same as
-- select lpad(mycolumn,'0',10) from mytable

select substr('0000000000' || mycolumn, -10, 10) from mytable

-- the statement below is almost the same as
-- select rpad(mycolumn,'0',10) from mytable

select substr(mycolumn || '0000000000', 1, 10) from mytable

এটি কেমন দেখাচ্ছে তা এখানে:

SELECT col1 || '-' || substr('00'||col2, -2, 2) || '-' || substr('0000'||col3, -4, 4)

এটা ফলন

"A-01-0001"
"A-01-0002"
"A-12-0002"
"C-13-0002"
"B-11-0002"

9
@ অ্যান্ড্রু - সাধারণভাবে NULL এর সাথে জড়িত কোনও স্কেলার অপারেশন NULL প্রদান করবে। আপনার প্রয়োজনীয়তা ব্যবহার করে পূরণ করা যেতে পারে COALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
ম্যাটবাইলি

37

এসকিউএলাইটের একটি printfফাংশন রয়েছে যা ঠিক তা করে:

SELECT printf('%s-%.2d-%.4d', col1, col2, col3) FROM mytable

1
প্রশ্নের ত্রুটি: এ জাতীয় কোনও কার্য নয়: মুদ্রণযোগ্য শর্তাবলীর সীমা থেকে প্রিন্টফ ('% s।% S', আইডি, url) নির্বাচন করতে অক্ষম to. আমার সংস্করণটি 3.8.2 2014-12-06 -0 আপনি কি সংস্করণ ব্যবহার করছেন?
বেরি সাকালা

5
@ বেরিটসাকালা: ৩.৮..6
ইয়াকভ গালকা

1
3.8.3 "এবং প্রিন্টফ () এসকিউএল ফাংশন যুক্ত করার মতো অন্যান্য ছোটখাট বর্ধন রয়েছে" "
সানডবার্গ

17

@ টুফটিম উত্তরের জন্য আরও একটি লাইন ... যদি আপনি সংক্ষিপ্ত সারির জন্য কাস্টম ফিল্ডের নাম চান ...

SELECT 
  (
    col1 || '-' || SUBSTR('00' || col2, -2, 2) | '-' || SUBSTR('0000' || col3, -4, 4)
  ) AS my_column 
FROM
  mytable;

এসকিউএল 3.8.8.3 এ পরীক্ষিত , ধন্যবাদ!

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