আর্কম্যাপে আন্ডারস্কোর চরিত্রের জন্য জিজ্ঞাসা করছেন?


10

ওরাকল-ভিত্তিক আরকএসডিই বৈশিষ্ট্য শ্রেণীর বিরুদ্ধে স্ট্যান্ডার্ড লাইক ক্যোয়ারির জন্য, যখন স্ট্রিংয়ের সাথে ব্যবহৃত হয় তখন আন্ডারস্কোর অক্ষর একটি একক অক্ষরের ওয়াইল্ডকার্ডকে উপস্থাপন করে।

আমি একটি পাঠ্য স্ট্রিং সন্ধান করতে একটি সংজ্ঞা ক্যোয়ারী চাপিয়ে দেওয়ার চেষ্টা করছি যা ঠিক নীচে আন্ডারস্কোর চরিত্রের পরে শুরু হয় 4 টি সংখ্যার সাথে শুরু হয়।

কেউ কি জানেন যে আমি কীভাবে নিজেই একটি অনুসন্ধানে একটি আন্ডারস্কোর চরিত্রটি নির্দিষ্ট করব বা যদি / পালানোর চরিত্রটি কী হতে পারে?

MDHald এর উত্তর ফাইল জিওডাটাবেসগুলির জন্য কাজ করে তবে আমার কেস ওরাকলের সাথে সুনির্দিষ্ট। মিথ্যাভাবে ধরে নেওয়া হয়েছে যে আরকএসডিই এবং ফাইল জিওডাটাবেস কোয়েরি এই ক্ষেত্রে একই কাজ করবে।


পালানোর চরিত্রটি সাধারণত ব্যাকস্ল্যাশ হয় \ - আমি বিশ্বাস করি এটি ওরাকল-এর ক্ষেত্রেও তাই, তাই আপনি \_আন্ডারস্কোরের জন্য অনুসন্ধান করতে চান তবে আপনি এটি অনুসন্ধান করতে চান d
মিডাভালো

@ মিদাবালো, মনে মনে এটাই প্রথম ছিল। আমার ক্যোয়ারী ক্যাবল = '_____ \ _%' ছিল, যা শূন্য ফলাফল পেয়েছিল।
এওক

আপনার ব্যবহারের প্রয়োজন হতে পারে LIKE(যদিও আপনি আপনার প্রশ্নের মতোই উল্লেখ করেছেন) - CABLE LIKE '____\_%'। আমি এখানে একটি নাটক করব যদিও আমি ওরাকলের চেয়ে এসকিউএল সার্ভার ব্যবহার করছি যাতে বিভিন্ন ফলাফল পাওয়া যায়
মিডাভালো


1
@ মিদাভালো আপনার ঠিক পরে ঠিক একই জিনিসটি খুঁজে পেয়েছেন
এওক

উত্তর:


7

উত্তর ট্র্যাক করার জন্য পরিচালিত।

আপনি কোয়েরিতে একটি ESCAPE অক্ষর নির্দিষ্ট করতে পারেন যেমন:

আমার_ফিল্ড পছন্দ করে '____ $ _%' এসকেপ '$'

এটি ঠিক 4 টি অক্ষর অনুসন্ধান করবে তারপরে একটি আন্ডারস্কোর অক্ষর এবং তার পরে অন্য কোনও কিছুর জন্য।

এই পৃষ্ঠায় ডকুমেন্টেশন পাওয়া গেছে: http://desktop.arcgis.com/en/arcmap/10.3/map/working-with-layers/sql-references-for-query-expressions-used-in-arcgis.htm

এটি কতটা পিছনে বা কোন সংস্করণগুলির জন্য কার্যকর তা নিশ্চিত নয় তবে এটি আরকিজিআইএস ডেস্কটপ 10.3 এর জন্য কাজ করে।

ডকুমেন্টেশন থেকে অংশ:

x [নয়] Y পছন্দ করুন [এসকেপ 'পলায়ন-চরিত্র']

আংশিক স্ট্রিং অনুসন্ধান তৈরি করতে ওয়াইল্ডকার্ড সহ LIKE অপারেটর (= অপারেটরের পরিবর্তে) ব্যবহার করুন। শতাংশ চিহ্ন (%) এর অর্থ হল যে কোনও কিছু তার জায়গায় গ্রহণযোগ্য: একটি চরিত্র, একশ অক্ষর বা কোনও অক্ষর। বিকল্পভাবে, আপনি যদি একটি ওয়াইল্ডকার্ডের সাথে অনুসন্ধান করতে চান যা একটি অক্ষরকে উপস্থাপন করে, একটি আন্ডারস্কোর (_) ব্যবহার করুন। আপনার যদি ননচার্যাক্টর ডেটা অ্যাক্সেস করতে হয় তবে CAST ফাংশনটি ব্যবহার করুন। উদাহরণস্বরূপ, এই কোয়েরিটি পূর্ণসংখ্যার ক্ষেত্র SCORE_INT থেকে 8 দিয়ে শুরু হওয়া নম্বরগুলি প্রত্যাবর্তন করে:

কাস্ট ("স্ক্রোরপট" হিসাবে ভোচারার) '8%' পছন্দ করুন

আপনার সন্ধানের স্ট্রিংয়ে শতাংশ চিহ্ন বা আন্ডারস্কোর অন্তর্ভুক্ত করার জন্য, এস্কেপ কীওয়ার্ডটি ব্যবহার করে অন্য চরিত্রটিকে পালানোর চরিত্র হিসাবে মনোনীত করুন, যা প্রত্যাবর্তন করে যে সত্যিকারের শতাংশ চিহ্ন বা আন্ডারস্কোর অবিলম্বে অনুসরণ করে। উদাহরণস্বরূপ, এই এক্সপ্রেশনটি 10% ডিস্ক্ট বা এ 10% এর মতো 10% সমন্বিত কোনও স্ট্রিং প্রদান করে:

"পরিমাণ" পছন্দ '% 10 $ %%' এসকেপ '$'


3

এটি কাজ করার জন্য আপনাকে CHAR_LENGTH এবং সাবস্ট্রিং নিয়োগ করতে হবে। এটি নিম্নলিখিত হিসাবে দেখতে হবে:

CHAR_LENGTH ("yourfieldname") =5 AND SUBSTRING("yourfieldname", 1, 4) <> '_'

যেখানে আপনার ফিল্ডের নাম = আপনার ক্ষেত্রের নাম।

যদিও কোডটিতে "" মুছবেন না। যেমনটি অনুলিপি করুন এবং কেবলমাত্র আপনার ক্ষেত্রের নামটি প্রতিস্থাপন করুন।


আপনার উত্তরটি ফাইল জিওডাটাবেসগুলির জন্য কাজ করে, তবে আমি বুঝতে পারি নি যে অন্তর্নিহিত ডিবিএমএস এতটাই পিক হবে। ওরাকল কোয়েরি পছন্দ করে না।
এওক

ওরাকল [DATABASE] দিয়ে কিছুটা জটিল হয়ে ওঠে .. [TABLENAME] এর জন্য এই ডাবল পয়েন্টগুলির প্রয়োজন। যদি কোয়েরিটি সংজ্ঞা হিসাবে কাজ না করে আপনি সর্বদা আপনার এসডিইতে একটি ভিউ তৈরি করতে পারেন (আপনার ডাটাবেসে ডান ক্লিক করুন> নতুন নির্বাচন করুন> নির্বাচন করুন>) মনে করুন (আপনি যদি ওরাকল থেকে টানছেন তবে আপনার একটি সেটআপ রয়েছে) এবং তারপরে লিখুন অনুরূপ ক্যোয়ারী।
এমডিহাল্ড

3

আমি এই প্রশ্নোত্তর জুড়ে এসেছি যা আমাকে এটি সমাধান করতে সহায়তা করেছিল যে কেন আমি আর্কপাই অনুসন্ধান কার্সারের এমন একটি ধারা ব্যবহার করতে অক্ষম ছিল যা কার্সারকে কেবলমাত্র সেই রেকর্ডগুলিতে সীমাবদ্ধ রাখতে পারে যা _নির্দিষ্ট পাঠ্য ক্ষেত্রে একটি আন্ডারস্কোর ( ) অন্তর্ভুক্ত করে।

আমি যখন এটি পেয়েছি ততক্ষণে আমি সমস্যাটি চিত্রিত করার জন্য ইতিমধ্যে একটি কোড স্নিপেট তৈরি করেছি, সেই প্রচেষ্টাটি নষ্ট করার পরিবর্তে, আমি এর সমাধানটি যুক্ত করেছি এবং সম্ভবত একই সমস্যার সাথে ভবিষ্যতের দর্শকের সহায়তার জন্য এটি এখানে পোস্ট করছি।

পরীক্ষাটি একটি ফাইল জিওডাটাবেস ব্যবহার করে এবং ডেস্কটপের জন্য আর্কজিআইএস 10.2.2 এ চালিত হয়েছিল।

import arcpy

arcpy.CreateFileGDB_management(r"C:\Temp","test.gdb")
arcpy.CreateFeatureclass_management(r"C:\Temp\test.gdb","testFC")
arcpy.AddField_management(r"C:\Temp\test.gdb\testFC","testField","Text")
cursor = arcpy.da.InsertCursor(r"C:\Temp\test.gdb\testFC",["testField"])
cursor.insertRow(["ABCD"])
cursor.insertRow(["A_CD"])
cursor.insertRow(["XYZ"])
cursor.insertRow(["X_Z"])
del cursor

where_clause = "testField LIKE '%C%'"
print("Using where_clause of {0} to limit search cursor to print any values containing the letter C:".format(where_clause))
with arcpy.da.SearchCursor(r"C:\Temp\test.gdb\testFC",["testField"],where_clause) as cursor:
    for row in cursor:
        print(row[0])
print("This is the expected result :-)")

where_clause = "testField LIKE '%_%'"
print("\nUsing where_clause of {0} to limit search cursor to print any values containing an underscore (_):".format(where_clause))
with arcpy.da.SearchCursor(r"C:\Temp\test.gdb\testFC",["testField"],where_clause) as cursor:
    for row in cursor:
        print(row[0])
print("This is not what I was hoping for :-(")

where_clause = "testField LIKE '%$_%' ESCAPE '$'"
print("\nUsing where_clause of {0} to limit search cursor to print any values containing an underscore (_):".format(where_clause))
with arcpy.da.SearchCursor(r"C:\Temp\test.gdb\testFC",["testField"],where_clause) as cursor:
    for row in cursor:
        print(row[0])
print("This is what I was hoping for :-)")

আউটপুটটি হ'ল:

>>> 
Using where_clause of testField LIKE '%C%' to limit search cursor to print any values containing the letter C:
ABCD
A_CD
This is the expected result :-)

Using where_clause of testField LIKE '%_%' to limit search cursor to print any values containing an underscore (_):
ABCD
A_CD
XYZ
X_Z
This is not what I was hoping for :-(

Using where_clause of testField LIKE '%$_%' ESCAPE '$' to limit search cursor to print any values containing an underscore (_):
A_CD
X_Z
This is what I was hoping for :-)
>>> 

1
তার জন্য ধন্যবাদ ... "বিশেষ" চরিত্রের কর্মকাণ্ড এবং বাক্য গঠনতে এতটা সময় নষ্ট করুন .... আশা করি আমি মনে করি পরের বার এটি কোথায় পাওয়া যাবে।
মাইক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.