ArcGIS สืบค้นอักขระเฉพาะในส่วนที่เฉพาะเจาะจงของฟิลด์


9

ใช้ ArcGIS 10.2.2 ฉันมีเขตข้อมูลสตริงในตารางแอตทริบิวต์ SDE ฉันต้องการความช่วยเหลือในการสร้างแบบสอบถามเพื่อเลือกระเบียนทั้งหมดที่มีศูนย์ในอักขระที่ 6 และ 7 ของฟิลด์ (เช่น 1995-0023A) เพื่อช่วยให้ฉันเข้าใจคำค้นหาประเภทนี้ได้ดีขึ้นฉันต้องการเห็นแบบสอบถามที่เลือกระเบียนที่มีศูนย์ในอักขระ 6 ตัวของเขตข้อมูล ฉันสามารถใช้ส่วนคำสั่ง "และ" และทำซ้ำเพื่อเลือกอักขระตัวที่ 7 ได้เช่นกัน

ฉันลองชุดรูปแบบแล้ว "FIELD1" LIKE '%00_______'แต่ไม่ได้เลือกระเบียนด้วยเลขศูนย์คู่ในตำแหน่งที่ถูกต้องในสตริง


ฉันได้ลองใช้ชุดรูปแบบของ "FIELD1" เช่น '% 00 _______' แต่มันไม่ได้เลือกระเบียนที่มีเลขศูนย์คู่ในตำแหน่งที่ถูกต้องในสตริง
Steve

สิ่งที่ชอบ"FIELD1" LIKE '_____00%'? นั่นจะใช้อักขระตัวแทนห้าตัวจากนั้นทั้งสองศูนย์ของคุณจากนั้นสัญลักษณ์แทนตัวอื่นสำหรับส่วนที่เหลือของสตริง มีฐานข้อมูลประเภทใดบ้าง SQL Server, Oracle, มีอะไรอีกไหม? โปรดแก้ไขคำถามของคุณเพื่อรวมข้อมูลจากความคิดเห็นของคุณด้านบนและรายละเอียดเกี่ยวกับฐานข้อมูลของคุณ (รุ่นที่วางจำหน่าย ฯลฯ )
Midavalo

"field_name" LIKE '% 00%' สิ่งนี้จะคืนค่าฟิลด์ทั้งหมดด้วยเลขศูนย์คู่ถัดจากกันไม่ใช้ตำแหน่งที่ 6 หรือ 7 หากช่วยได้
NULL.Dude

ขีดล่าง_ถูกใช้ในฐานข้อมูลบางตัวเป็นอักขระตัวแทนวางเดี่ยว เปอร์เซ็นต์%คืออักขระตัวแทนสำหรับที่อักขระทั้งหมด
Midavalo

1
ขอบคุณพวกดูเหมือนว่าฉันมีแบบสอบถามกลับรายการ ข้อเสนอแนะของ Midavalo ทำงานได้: FIELD1 LIKE '_____ 00%' มันเป็นฐานข้อมูล Oracle
Steve

คำตอบ:


12

ขีดล่าง_ถูกใช้ในฐานข้อมูลบางตัวเป็นอักขระตัวแทนวางเดี่ยว เปอร์เซ็นต์%คืออักขระตัวแทนสำหรับที่อักขระทั้งหมด

ดังนั้นสิ่งที่ชอบ"FIELD1" LIKE '_____00%'ควรใช้งานได้ขึ้นอยู่กับประเภทของฐานข้อมูล นั่นจะใช้อักขระตัวแทนห้าตัวจากนั้นทั้งสองศูนย์ของคุณจากนั้นสัญลักษณ์แทนตัวอื่นสำหรับส่วนที่เหลือของสตริง


จะใช้งานได้ใน MS SQL Server DB หรือไม่
NULL.Dude

1
@ Joe ใช่มันควร - ฉันใช้วิธีนี้สำหรับการสืบค้นที่คล้ายกันในอดีตใน SQL Server แต่ฉันไม่สามารถทดสอบได้ในตอนนี้
Midavalo

3

ต่อไปนี้จะเลือกระเบียนทั้งหมดที่มีศูนย์ในตำแหน่งอักขระที่ 6 เช่นเดียวกับในตำแหน่งอักขระที่ 7

FIELDNAME like '_____0%' and FIELDNAME like '______0%'

มีขีดเส้นใต้ห้าเส้นนำหน้าศูนย์ในส่วนแรกของนิพจน์และขีดเส้นใต้หกอันนำหน้าศูนย์ในส่วนที่สอง เครื่องหมายขีดล่างคือ 'สัญลักษณ์ตัวแทน' ที่ต้องมีอักขระใด ๆ ปรากฏ (อาจเป็นช่องว่างตัวเลขตัวอักษรสัญลักษณ์ ฯลฯ ) อักขระตัวแทนเปอร์เซ็นต์ (%) อนุญาตให้ทำตามสิ่งใดก็ได้

วิธีที่สั้นกว่าในการสืบค้นนี้ก็คือ

FIELDNAME like '_____00%'

-1

นี่ขึ้นอยู่กับ RDBMS แม้ว่าสิ่งต่อไปนี้ควรใช้ได้เป็นส่วนใหญ่:

SUBSTRING (ชื่อฟิลด์, 6, 2) = '00'


ยินดีต้อนรับสู่ GIS SE! ในฐานะผู้ใช้ใหม่โปรดเข้าชมทัวร์เพื่อเรียนรู้เกี่ยวกับรูปแบบคำถาม & คำตอบที่เรามุ่งเน้น คุณเคยทำงานนี้สำเร็จหรือไม่? จากประสบการณ์ของฉันSUBSTRING()ไม่เคยทำงานใน SQL ที่ จำกัด ของ ArcMap คุณใช้ที่นี่หรือคุณใช้ที่อื่นหรือไม่ คุณสามารถแก้ไขคำตอบเพื่อขยายสิ่งนี้ได้ไหม?
Midavalo

OP ระบุว่าสิ่งนี้อยู่ใน SDE ไม่ใช่ไฟล์ฐานข้อมูล, mdb หรือ shapefile SDE กำหนด RDBMS แบบสอบถาม ArcMap ขึ้นอยู่กับส่วนที่ของ SQL ตาม RDBMS เฉพาะที่มี SDE อยู่ (สิ่งสำคัญคือต้องทราบว่าฐานข้อมูลประเภทใดที่มีข้อมูลอยู่ในขณะที่ไวยากรณ์อาจแตกต่างกัน) ใช่ฉันเคยทำงานนี้สำเร็จหลายครั้งในรอบ 20 ปีที่ฉันเป็นผู้ดูแลระบบ SDE ฉันได้ใช้วิธีนี้เป็นตัวเลือกเนื่องจากไม่ใช่ RDBMS ทั้งหมดที่จะใช้ตัวเลือก '_' โซลูชันของฉันเรียบง่ายและเก่าแก่ แต่ก็ใช้งานได้ในสภาพแวดล้อม SDE
CaptRay

ฉันถามเมื่อฉันได้ทดสอบเมื่อสัปดาห์ที่แล้วและมันไม่ทำงาน ฉันอาจทำผิด แต่มันไม่ได้ผลสำหรับฉัน
Midavalo

ใน SDE ถ้าเป็นเช่นนั้น SDE ของคุณใช้ RDBMS อยู่ อย่างแท้จริงฉันอยากรู้อยากเห็นเนื่องจากสภาพแวดล้อม RDBMS วางอุบายฉันโดยเฉพาะอย่างยิ่งสำหรับความแตกต่าง ฉันทดสอบ (สำเร็จใน Oracle และ SQL Server) ก่อนโพสต์ด้วย SUBSTRING จะไม่ถูกต้องสำหรับรูปร่างของไฟล์ มันจะทำงานสำหรับฐานข้อมูลไฟล์ทางภูมิศาสตร์
2560

btw ไวยากรณ์ของ Oracle คือ SUBSTR
2560
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.