ArcGIS truy vấn (các) ký tự cụ thể trong phần cụ thể của một trường


9

Sử dụng ArcGIS 10.2.2, tôi có trường chuỗi trong bảng thuộc tính SDE. Tôi cần trợ giúp để tạo một truy vấn để chọn tất cả các bản ghi có số 0 trong ký tự thứ 6 và thứ 7 của trường (tức là 1995-0023A). Để giúp tôi hiểu rõ hơn về loại truy vấn này, tôi cũng muốn có thể xem một truy vấn chọn các bản ghi có số 0 chỉ bằng ký tự thứ 6 của trường. Sau đó tôi có thể sử dụng mệnh đề "và" và nhân đôi nó để chọn ký tự thứ 7.

Tôi đã thử các biến thể của "FIELD1" LIKE '%00_______'nhưng nó không chọn các bản ghi với các số 0 ở đúng vị trí trong chuỗi.


Tôi đã thử các biến thể của "FIELD1" THÍCH '% 00 _______' nhưng nó không chọn các bản ghi với các số 0 ở đúng vị trí trong chuỗi.
Steve

Một cái gì đó như thế "FIELD1" LIKE '_____00%'nào? Điều đó sẽ sử dụng năm ký tự đại diện, sau đó là hai số không của bạn, sau đó là một ký tự đại diện khác cho phần còn lại của chuỗi. Những loại cơ sở dữ liệu này là trong? Máy chủ SQL, Oracle, cái gì khác? Vui lòng chỉnh sửa câu hỏi của bạn để bao gồm thông tin từ nhận xét của bạn ở trên và thông tin chi tiết về cơ sở dữ liệu của bạn (phiên bản phát hành, v.v.)
Midavalo

"field_name" THÍCH '% 00%', điều này sẽ trả về tất cả các trường có số không gấp đôi cạnh nhau không sử dụng vị trí thứ 6 hoặc thứ 7 nếu điều đó có ích.
NULL.Dude

Một dấu gạch dưới _được sử dụng trong một số cơ sở dữ liệu dưới dạng ký tự đại diện duy nhất. Một phần trăm %là ký tự đại diện cho tất cả các vị trí nhân vật.
Midavalo

1
Cảm ơn các bạn, có vẻ như tôi đã truy vấn ngược lại. Đề xuất của Midavalo đã hoạt động: FIELD1 THÍCH '_____ 00%'. Đó là một DB của Oracle.
Steve

Câu trả lời:


12

Một dấu gạch dưới _được sử dụng trong một số cơ sở dữ liệu dưới dạng ký tự đại diện duy nhất. Một phần trăm %là ký tự đại diện cho tất cả các vị trí nhân vật.

Do đó, một cái gì đó như "FIELD1" LIKE '_____00%'nên hoạt động, tùy thuộc vào loại cơ sở dữ liệu. Điều đó sẽ sử dụng năm ký tự đại diện, sau đó là hai số không của bạn, sau đó là một ký tự đại diện khác cho phần còn lại của chuỗi.


điều này có hoạt động trong MS SQL Server DB không?
NULL.Dude

1
@Joe Có nên - Tôi đã sử dụng phương pháp này cho các truy vấn tương tự trong quá khứ trong SQL Server, nhưng tôi không thể kiểm tra điều này ngay bây giờ.
Midavalo

3

Sau đây sẽ chọn tất cả các bản ghi có số 0 ở vị trí ký tự thứ 6 cũng như ở vị trí ký tự thứ 7.

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

Có năm dấu gạch dưới đứng trước số 0 trong phần đầu tiên của biểu thức và sau đó có sáu dấu gạch dưới trước số 0 trong phần thứ hai. Dấu gạch dưới là một 'ký tự đại diện' yêu cầu bất kỳ ký tự nào có mặt (có thể là khoảng trắng, số, chữ cái, ký hiệu, v.v.). Ký tự đại diện phần trăm (%) cho phép mọi thứ theo dõi (cũng cho phép không có gì để theo dõi - không yêu cầu bất kỳ ký tự nào).

Một cách ngắn gọn hơn để truy vấn này sẽ là

FIELDNAME like '_____00%'

-1

Đây là phụ thuộc RDBMS, mặc dù những điều sau đây sẽ hoạt động trong hầu hết:

ĐĂNG KÝ (tên trường, 6, 2) = '00'


Chào mừng bạn đến với GIS SE! Là người dùng mới, vui lòng tham quan để tìm hiểu về định dạng Hỏi và Đáp tập trung của chúng tôi. Bạn đã có công việc này thành công? Theo kinh nghiệm của tôi, SUBSTRING()chưa bao giờ làm việc trong SQL giới hạn của ArcMap. Đây là nơi bạn sử dụng nó, hoặc bạn sử dụng nó ở nơi khác? Bạn có thể chỉnh sửa câu trả lời của bạn để mở rộng về điều này?
Midavalo

OP tuyên bố đây là trong SDE, không phải là cơ sở dữ liệu địa lý tệp, mdb hoặc shapefile. SDE ra lệnh RDBMS. Truy vấn ArcMap dựa trên phần SQL, dựa trên RDBMS cụ thể nơi SDE tồn tại (quan trọng là phải biết loại dữ liệu nào trong dữ liệu, vì cú pháp có thể khác nhau). Có, tôi đã thực hiện thành công nhiều lần trong hơn 20 năm làm Quản trị viên SDE. Tôi đã ném cái này vào như một tùy chọn, vì không phải tất cả RDBMS sẽ sử dụng tùy chọn '_'. Giải pháp của tôi rất đơn giản và cũ kỹ, nhưng nó hoạt động trong môi trường SDE.
CaptRay

Tôi đã hỏi khi tôi đã thử nghiệm vào tuần trước và nó không hoạt động. Tôi có thể đã làm sai, nhưng nó không làm việc cho tôi.
Midavalo

Trong SDE? Nếu vậy, RDBMS mà SDE của bạn ngồi trên? Thực sự, tôi tò mò, vì môi trường RDBMS gây tò mò cho tôi, đặc biệt là về sự khác biệt. Tôi đã thử nghiệm nó (thành công trên Oracle và SQL Server) trước khi đăng. SUBSTRING sẽ không hợp lệ cho shapefiles. Nó sẽ làm việc cho cơ sở dữ liệu địa lý tập tin.
CaptRay

btw, cú pháp của Oracle là SUBSTR.
CaptRay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.