"_" (আন্ডারস্কোর) "-" (হাইফেন) মিলবে কেন?


110

এই কোয়েরিটি ব্যবহার করে আমাকে পিডিএফ ম্যানুয়ালটি সন্ধান করতে হবে:

root@localhost:test> select * from a where name like '%taz_manual%.pdf%';
+--------------------+------------------+-------------+
| name               | description      |        size | 
+--------------------+------------------+-------------+
| taz-manual-1.1.pdf | Manual v1.0 TA-Z |    31351902 |
| taz-manual-0.2.pdf | Manual v1.0 T1-A |     3578278 |
| taz_manual-2.0.pdf | Manual v2.0 GA-X |   542578278 |
etc........
+--------------------+------------------+-------------+
132 row in set (0.00 sec)

আমি নামটি নির্দিষ্ট করার সময় আমি কেন ড্যাশযুক্ত ব্যক্তিটিকে দেখছি taz_manual%.pdf?

উত্তর:


231

কারণ আন্ডারস্কোরটি _শতাংশের মতো একটি ওয়াইল্ডকার্ড %, এটি ছাড়া কেবল এটি একটি চরিত্রের সন্ধান করে।

এসকিউএল প্যাটার্নের মিলটি আপনাকে কোনও একক অক্ষরের সাথে মেলে "_" এবং একটি নির্বিচার সংখ্যক অক্ষরের সাথে শূন্য করতে ("শূন্য অক্ষর সহ)" "%" ব্যবহার করতে সক্ষম করে।

(বিভাগটি ৩.৩.৪. From থেকে । মাইএসকিউএল ডকুমেন্টেশনে প্যাটার্ন মিলছে ।)

আপনি যদি আন্ডারস্কোরটিকে likeআক্ষরিক হিসাবে ব্যবহার করতে চান তবে আপনাকে এড়াতে হবে:

select * from a where name like '%taz\_manual%.pdf%';

আফাইক এটি তখনই প্রাসঙ্গিক যখন আপনি কোনও নিদর্শন প্রসঙ্গে থাকবেন। যেমন একটি LIKEবিবৃতি ভিতরে । যখন সমস্ত প্রতিস্থাপন _একটি সঙ্গে -: UPDATE sys_file set identifier = REPLACE(identifier, '_', '-') WHERE identifier LIKE '%\_%';। ভিতরে পালাবার LIKEএবং ভিতরে কোনও পালানোর বিষয়টি লক্ষ্য করুন REPLACE। (আমি এটি আশ্চর্যজনক মনে করি যে আপনি প্রতিস্থাপনের অভ্যন্তরের কোনও প্যাটার্নের প্রসঙ্গে নেই ...)
— হাফেনক্র্যানিচ

মাইএসকিএল ডক্ট থেকে হাফেনক্র্যানিচ: "তুলনা অপারেটরগুলি পছন্দ করুন বা না পছন্দ করুন"
— বুক অফ জিউস

2

স্পেস এবং হাইফেনের সাথে আমার একই রকম সমস্যা ছিল যখন সঠিক ম্যাচের সাথে স্ট্রিংয়ের মিল ছিল:

SELECT id FROM location WHERE name = 'IND - HQ';

উপরের প্রশ্নটি মাইএসকিউএলে কোনও রেকর্ড ফিরিয়ে দেয়নি। আমাকে ফাঁকা স্থান এবং হাইফেনগুলি ছেড়ে পালাতে হয়েছিল এবং LIKEসমান (=) এর সাথে নির্ভুল ম্যাচের পরিবর্তে ব্যবহার করতে হয়েছিল :

SELECT id FROM location WHERE name LIKE 'IND_\-_HQ';

আপনি কি নিশ্চিত যে এটি সম্পর্কিত? এই সঠিক নামের সাথে কোনও অবস্থানের সারি ছিল না ... ???
— নিকো হাজেস

হ্যাঁ, অবস্থান = '
— আইএনডি

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