এক্স অক্ষরের চেয়ে কম / কম এমন কিছু নির্বাচন করুন


109

ভাবছিলাম যে এসকিউএল-তে x / এর চেয়ে কম অক্ষর থাকা এমন কোনও কিছু নির্বাচন করা সম্ভব কিনা?

উদাহরণস্বরূপ, আমার একটি কর্মচারী টেবিল রয়েছে এবং আমি সমস্ত কর্মচারীর নাম প্রদর্শন করতে চাই যার নামে 4 টিরও বেশি অক্ষর রয়েছে।

এখানে একটি উদাহরণ টেবিল

ID EmpName Dept
1  Johnny  ACC
2  Dan     IT
3  Amriel  PR
4  Amy     HR

উত্তর:


180

আপনি যদি এসকিউএল সার্ভার ব্যবহার করেন তবে LEN(দৈর্ঘ্য) ফাংশনটি ব্যবহার করুন :

SELECT EmployeeName FROM EmployeeTable WHERE LEN(EmployeeName) > 4

এর জন্য এমএসডিএন বলে:


ট্রেলিং ফাঁকা বাদ দিয়ে নির্দিষ্ট স্ট্রিং এক্সপ্রেশনটির অক্ষরের সংখ্যা প্রদান করে ।

এখানে এমএসডিএন-এর লিঙ্ক

Oracle / plsql এর জন্য আপনি ব্যবহার করতে পারেন Length(), মাইএসকিএল দৈর্ঘ্যও ব্যবহার করে ।

এখানে ওরাকল ডকুমেন্টেশন রয়েছে:

http://www.techonthenet.com/oracle/functions/length.php

এবং এখানে মাইএসকিউএল ডকুমেন্টেশন রয়েছে Length(string):

http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_length

PostgreSQL এর জন্য, আপনি length(string)বা ব্যবহার করতে পারেন char_length(string)। এখানে পোস্টগ্রিজ এসকিউএল ডকুমেন্টেশন রয়েছে:

http://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-SQL


1
যৌগিক বৈষম্যের জন্য, কেবল একটি ANDবিবৃতি যুক্ত করুন SELECT city FROM student.zipcode WHERE LENGTH(city) >= 4 AND LENGTH(city) <= 9;
আলেকজান্দারসেলিংটন

28

জোনএহ কীভাবে লিখতে হবে তার অংশটি খুব ভালভাবে কভার করেছে। আরও একটি উল্লেখযোগ্য সমস্যা রয়েছে যা অবশ্যই উল্লেখ করতে হবে, যা এই জাতীয় ক্যোয়ারির পারফরম্যান্স বৈশিষ্ট্য। আসুন এখানে এটি পুনরাবৃত্তি করুন (ওরাকলকে অভিযোজিত):

SELECT EmployeeName FROM EmployeeTable WHERE LENGTH(EmployeeName) > 4;

এই প্রশ্নের সাথে সীমাবদ্ধ রেখেছে একটি ফাংশন ফলাফল একটি কলাম মান প্রয়োগ (প্রয়োগের ফলাফলের LENGTHফাংশনEmployeeName কলাম)। ওরাকলে এবং সম্ভবত অন্য সমস্ত আরডিবিএমএসে, এর অর্থ এই যে কর্মচারী নেমে একটি নিয়মিত সূচক এই প্রশ্নের উত্তর দিতে অসার হবে; ডাটাবেস একটি পূর্ণ টেবিল স্ক্যান করবে, যা সত্যই ব্যয়বহুল।

তবে বিভিন্ন ডাটাবেস একটি ফাংশন সূচক বৈশিষ্ট্য সরবরাহ করে যা এই জাতীয় প্রশ্নের গতি বাড়ানোর জন্য ডিজাইন করা হয়েছে। উদাহরণস্বরূপ, ওরাকলে আপনি এই জাতীয় সূচি তৈরি করতে পারেন:

CREATE INDEX EmployeeTable_EmployeeName_Length ON EmployeeTable(LENGTH(EmployeeName));

এটি আপনার ক্ষেত্রে এখনও সহায়তা না করে, কারণ আপনার অবস্থার জন্য সূচকটি খুব বেছে বেছে নাও পেতে পারে। এর দ্বারা আমি নিম্নলিখিতটি বোঝাতে চাইছি: আপনি সারিগুলির জন্য জিজ্ঞাসা করছেন যেখানে নামের দৈর্ঘ্য 4 এর চেয়ে বেশি Let's আসুন ধরে নেওয়া যাক যে এই টেবিলের কর্মচারীদের 80% নাম 4. এর চেয়ে বেশি লম্বা, ঠিক আছে, তাহলে ডাটাবেসটি সম্ভবত উপসংহারে চলেছে ( সঠিকভাবে) যে এটি সূচকটি ব্যবহার করার মতো নয়, কারণ এটি সম্ভবত টেবিলের বেশিরভাগ ব্লককে পড়তে হবে।

তবে, আপনি যদি ক্যোয়ারীটি বলার জন্য পরিবর্তন করেছেন LENGTH(EmployeeName) <= 4বা LENGTH(EmployeeName) > 35ধরে নিচ্ছেন যে খুব কম সংখ্যক কর্মীরই 5 টিরও কম চরিত্র বা 35 টিরও বেশিের নাম রয়েছে, তবে সূচকটি বেছে নেওয়া এবং কার্যকারিতা উন্নত করতে পারে।

যাইহোক, সংক্ষেপে: আপনি যে লেখার চেষ্টা করছেন তার মতো ক্যোয়ারির পারফরম্যান্স বৈশিষ্ট্য থেকে সাবধান থাকুন।


5

আজ আমি ডিবি 2 তে একই চেষ্টা করছিলাম এবং নীচে ব্যবহার করা হয়েছিল, আমার ক্ষেত্রে আমার ভার্চার কলামের শেষে ফাঁকা জায়গা ছিল

কর্মচারী টেবিল থেকে কর্মসংস্থান নির্বাচন করুন যেখানে লেন্থ (ট্রিম (কর্মচারী নাম))> 4;


0

আপনি যদি ডিবি 2 ডাটাবেস অনুসন্ধানের সময় একই সমস্যাটি অনুভব করেন তবে আপনাকে নীচের কোয়েরিটি ব্যবহার করতে হবে।

SELECT * 
FROM OPENQUERY(LINK_DB,'SELECT
CITY,
cast(STATE as varchar(40)) 
FROM DATABASE')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.