এসকিউএল লাইক ধারাটির জন্য বিশেষ অক্ষরের তালিকা


119

এসকিউএল-এর জন্য সমস্ত বিশেষ অক্ষরের সম্পূর্ণ তালিকা কী (আমি এসকিউএল সার্ভারে আগ্রহী কিন্তু অন্যদেরও ভাল লাগবে) লাইক ক্লজ?

যেমন

SELECT Name FROM Person WHERE Name LIKE '%Jon%'

এসকিউএল সার্ভার :

  1. %
  2. : _
  3. [নির্দিষ্টকরণকারী] উদ্যান [এজেড]
  4. [^ সুনির্দিষ্টভাবে উল্লেখ করা]
  5. ESCAPE ধারাটি% 30%!% '' এসকেপ '!' সত্য হিসাবে 30% মূল্যায়ন করবে
  6. 'চরিত্রগুলি' তারা 'হয়ে যায়' এর সাথে পালাতে হবে

মাইএসকিউএল:

  1. % - শূন্য বা আরও বেশি অক্ষরের যে কোনও স্ট্রিং।
  2. _ - যে কোনও একক চরিত্র
  3. ESCAPE ধারাটি% 30%!% '' এসকেপ '!' সত্য হিসাবে 30% মূল্যায়ন করবে

ওরাকল:

  1. % - শূন্য বা আরও বেশি অক্ষরের যে কোনও স্ট্রিং।
  2. _ - যে কোনও একক চরিত্র
  3. ESCAPE ধারাটি% 30%!% '' এসকেপ '!' সত্য হিসাবে 30% মূল্যায়ন করবে

সাইবেস

  1. %
  2. : _
  3. [নির্দিষ্টকরণকারী] উদ্যান [এজেড]
  4. [^ সুনির্দিষ্টভাবে উল্লেখ করা]

অগ্রগতি:

  1. % - শূন্য বা আরও বেশি অক্ষরের যে কোনও স্ট্রিং।
  2. _ - যে কোনও একক চরিত্র

    এখানে রেফারেন্স গাইড [পিডিএফ]

পোস্টগ্রি:

  1. % - শূন্য বা আরও বেশি অক্ষরের যে কোনও স্ট্রিং।
  2. _ - যে কোনও একক চরিত্র
  3. ESCAPE ধারাটি% 30%!% '' এসকেপ '!' সত্য হিসাবে 30% মূল্যায়ন করবে

এএনএসআই এসকিউএল ৯২:

  1. %
  2. : _
  3. একটি ESCAPE অক্ষর নির্দিষ্ট করা থাকলেই

পোস্টগ্রিসএসকিউএলে SIMILAR TOঅপারেটর রয়েছে যা নিম্নলিখিতগুলি যুক্ত করে:

  1. [specifier]
  2. [^specifier]
  3. | - দুটি বিকল্প হয়
  4. * - আগের আইটেমটির পুনরুক্তি শূন্য বা আরও বেশি বার।
  5. + - আগের আইটেমটির এক বা একাধিক বার পুনরাবৃত্তি।
  6. () - গ্রুপ আইটেম একসাথে

ধারণাটি হ'ল এটিকে একটি সম্প্রদায় উইকি বানান যা এর জন্য "ওয়ান স্টপ শপ" হয়ে উঠতে পারে।


এটি সম্ভবত এসসিএপিইপি ধারাটি উল্লেখ করার মতো। এসকিউএল সার্ভার, ওরাকল এবং মাইএসকিউএল সকলেই এটিকে সমর্থন করে। সাইবেস সম্পর্কে জানেন না।
ডেভ ওয়েব

আমি এখন ভাবছি ESCAPE ধারাটি স্ট্যান্ডার্ড এসকিউএল তাই সম্ভবত কেবল একবার উল্লেখ করা দরকার
ডেভ ওয়েব

আমি নিজেকে জানি না যে এটি সমস্ত তালিকাভুক্ত সার্ভারগুলিতে প্রয়োগ করা হয়েছে (এবং যেগুলি পরে যুক্ত হতে পারে) তাই আমি এটিকে "সমস্ত সমর্থন" বিভাগে টানতে নারাজ। আপনি যদি নিশ্চিত হন যে তারা সকলেই সমর্থিত তবে এগিয়ে যান then
জোনাথন পার্কার 6

পালানোর চরিত্রটি নিজেই পালাতে ভুলবেন না ...
ক্রিস্টোফার হামার্সট্রাম

দুটি মন্তব্য। প্রথমত, মাইক্রোসফ্ট এসকিউএল প্রাথমিকভাবে সিবাজ থেকে আসে, সুতরাং সাদৃশ্যটি কাকতালীয় নয়। দ্বিতীয়ত, অন্যের সাথে একক উক্তিটি রক্ষা করা সীমাবদ্ধ নয় LIKE; উদাহরণস্বরূপ WHERE familyname = 'O''Toole'। তৃতীয়ত, SIMILAR TOঅপারেটর এক ধরণের হাইব্রিড নিয়মিত অভিব্যক্তি প্রবর্তন করে, যার নিজস্ব বৈশিষ্ট্য রয়েছে (এবং আরও অনেকগুলি বিশেষ অক্ষর), তাই সম্ভবত এখানে অন্তর্ভুক্ত করা উচিত নয়। আমি অনুমান করি যে এটি 3 টি মন্তব্য করে তবে স্প্যানিশ অনুসন্ধানের প্রত্যাশা কেউ করে না।
মাঙ্গো

উত্তর:


22

এসকিউএল সার্ভারের জন্য, http://msdn.microsoft.com/en-us/library/ms179859.aspx থেকে :

  • শূন্য বা আরও বেশি অক্ষরের যে কোনও স্ট্রিং।

    WHERE title LIKE '%computer%' বইয়ের শিরোনামের যে কোনও জায়গায় 'কম্পিউটার' শব্দটি সহ সমস্ত বইয়ের শিরোনাম সন্ধান করে।

  • _ যে কোনও একক চরিত্র।

    WHERE au_fname LIKE '_ean' ইয়ান (ডিন, শান এবং অন্যান্য) দিয়ে শেষ হওয়া সমস্ত চার অক্ষরের প্রথম নামগুলি সন্ধান করে।

  • [] নির্দিষ্ট পরিসীমা ([আফগান)) বা সেট ([আবদদেফ]) এর মধ্যে যে কোনও একক অক্ষর।

    WHERE au_lname LIKE '[C-P]arsen'লেখক সর্বশেষ নামগুলি আগ্নেয়াস্ত্র দিয়ে শেষ করে এবং সি এবং পি এর মধ্যে যে কোনও একক অক্ষর দিয়ে শুরু করে, উদাহরণস্বরূপ কারসেন, লারসেন, কারসেন এবং আরও কিছু। পরিসীমা অনুসন্ধানে, পরিসরের অন্তর্ভুক্ত অক্ষরগুলি কোলেশনের বাছাইয়ের নিয়মের উপর নির্ভর করে পৃথক হতে পারে।

  • [^] নির্দিষ্ট রেঞ্জের ([^ AF]) বা সেট ([^ abcdef]) এর মধ্যে নেই এমন একক অক্ষর।

    WHERE au_lname LIKE 'de[^l]%' সমস্ত লেখকের শেষ নাম ডি দিয়ে শুরু হবে এবং যেখানে নিম্নলিখিত চিঠিটি নয় l।


1
আমি কেবল চেষ্টা করেছি এবং দেখে মনে হচ্ছে আপনি পারছেন। তবে এটি নিয়মিত প্রকাশের মতো নয় => [0-9] এর পরিবর্তে আপনার প্রতিটি চরিত্রটি নির্দিষ্ট করা দরকার: [0123456789]
ğağdaş টেকিন

3
অপেক্ষা কর, না। এটি RegEx এর মতো তাই [0-9] পাশাপাশি কাজ করে। বিভ্রান্তির জন্য দুঃখিত.
ğağdaş টেকিন

6

এএনএসআই এসকিউএল ৯২ :

  • %
  • : _
  • একটি ESCAPE অক্ষর নির্দিষ্ট করা থাকলেই

এটি হতাশাজনক যে অনেকগুলি ডাটাবেস মানক নিয়মের সাথে লেগে থাকে না এবং অতিরিক্ত অক্ষর যুক্ত করে না বা ভুলভাবে ESCAPE সক্ষম করে যখন '\' এর ডিফল্ট মানটি অনুপস্থিত থাকে। আমাদের ইতিমধ্যে '\' নিয়ে যথেষ্ট সমস্যা নেই!

এখানে ডিবিএমএস-স্বতন্ত্র কোডটি লেখা অসম্ভব, কারণ আপনি জানেন না যে আপনি কোন অক্ষরগুলি পালাতে হবে এবং মানকটি বলে যে আপনি এমন জিনিসগুলি এড়াতে পারবেন না যা পালাতে হবে না। (বিভাগ 8.5 / সাধারণ বিধি / 3.a.ii দেখুন।)

আপনাকে এসকিউএল ধন্যবাদ! gnnn


5

আপনার যুক্ত করা উচিত যে এসকিউএল সার্ভারে আপনাকে একটি অতিরিক্ত 'এক্সাইজিং এড়াতে' যোগ করতে হবে:

স্মিথ এর -> স্মিথ এর


1

সিবাস:

%              : Matches any string of zero or more characters.
_              : Matches a single character.
[specifier]    : Brackets enclose ranges or sets, such as [a-f] 
                 or [abcdef].Specifier  can take two forms:

                 rangespec1-rangespec2: 
                   rangespec1 indicates the start of a range of characters.
                   - is a special character, indicating a range.
                   rangespec2 indicates the end of a range of characters.

                 set: 
                  can be composed of any discrete set of values, in any 
                  order, such as [a2bR].The range [a-f], and the 
                  sets [abcdef] and [fcbdae] return the same 
                  set of values.

                 Specifiers are case-sensitive.

[^specifier]    : A caret (^) preceding a specifier indicates 
                  non-inclusion. [^a-f] means "not in the range 
                  a-f"; [^a2bR] means "not a, 2, b, or R."

0

এসকিউএল সার্ভারের সম্ভাব্য উত্তর

আকর্ষণীয় আমি কেবল এসকিউএল সার্ভারের সাথে লিনকপ্যাড ব্যবহার করে একটি পরীক্ষা চালিয়েছি যা কেবল লিনককে এসকিউএল পর্যন্ত চালানো উচিত এবং এটি নিম্নলিখিত এসকিউএল বিবৃতিটি উত্পন্ন করে।

রেকর্ডস .যেখানে (r => r.Name.Contains ("lkjwer --_ ~ []"))

-- Region Parameters
DECLARE @p0 VarChar(1000) = '%lkjwer--~_~~~[]%'
-- EndRegion
SELECT [t0].[ID], [t0].[Name]
FROM [RECORDS] AS [t0]
WHERE [t0].[Name] LIKE @p0 ESCAPE '~'

সুতরাং আমি এটি এখনও পরীক্ষা করে দেখিনি তবে মনে হচ্ছে সম্ভাব্যভাবে মূল ESCAPE '~'শব্দটি একটি মত প্রকাশের মধ্যে ব্যবহারের জন্য কোনও স্ট্রিং স্বয়ংক্রিয়ভাবে পলায়নের অনুমতি দিতে পারে।


তারা সম্ভবত ব্যবহার করছে ESCAPEকারণ এটি পালিয়ে যাওয়া চরিত্রের জন্য দুটি অক্ষর (উদাহরণস্বরূপ, %হয়ে ওঠে ~%) পরিবর্তে তিনটির পরিবর্তে (উদাহরণস্বরূপ, ছাড়া ESCAPE, %হয়ে ওঠে [%]) অনুমতি দেয়।
বিনিকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.