ฉันเจอคำถาม & คำตอบนี้ซึ่งช่วยฉันแก้ปัญหาว่าทำไมฉันจึงไม่สามารถใช้ส่วนคำสั่งบนเคอร์เซอร์ค้นหา ArcPy ซึ่งสามารถ จำกัด เคอร์เซอร์เฉพาะระเบียนที่มีขีดล่าง ( _
) ในฟิลด์ข้อความเฉพาะ
ตามเวลาที่ฉันพบว่าฉันได้พัฒนาโค้ดขนาดเล็กเพื่อแสดงปัญหาดังนั้นแทนที่จะเสียความพยายามฉันได้เพิ่มวิธีแก้ไขปัญหาและตอนนี้ฉันโพสต์ไว้ที่นี่เพื่อช่วยผู้เยี่ยมชมในอนาคตด้วยปัญหาเดียวกัน
การทดสอบใช้ฐานข้อมูลไฟล์และเรียกใช้ที่ ArcGIS 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 :-)
>>>
\
- ฉันเชื่อว่านี่เป็นกรณีของ Oracle ดังนั้นคุณต้องการ\_
ค้นหาว่าค้นหาขีดล่างหรือไม่