Biểu thức SQL để tìm chuỗi bao gồm các chữ cái trong ArcGIS Desktop?


8

Tôi đang làm việc trên ArcGIS 9.3.1. Tôi có một shapefile với trường chuỗi chứa các tên điểm như sau:

10
12
12/13
t/9
6577y
1234
12t9
124y67
u9

và v.v. (và vâng, tôi biết nó trông giống như một mớ hỗn độn khổng lồ. Nó không phải là thiết kế của tôi). Sử dụng WHERE MyColumn LIKE '%Search String%'Tôi có thể tìm thấy (sử dụng chọn theo thuộc tính) những cái có chứa một chữ cái cụ thể hoặc dấu gạch chéo ngược (/).

Làm cách nào tôi có thể chọn tất cả các giá trị có chứa một chữ cái (trong ví dụ này: t / 9, 6577y, 12t9, 124y67, u9), không quan tâm đó là chữ cái nào hoặc vị trí của nó là gì? (có cách nào để xác định vị trí không?)


3
Bạn có chắc là bạn không đập đầu vào bàn phím và bật ra không? : P
blah238

1
tiếc là không có.
jonatr

Câu trả lời:


2

Đối với một cái gì đó nhanh chóng và (rất) bẩn, bạn có thể sử dụng một cái gì đó như thế này để tìm tất cả các bản ghi với bất kỳ ký tự bảng chữ cái 26 chữ cái tiêu chuẩn. Sử dụng tìm và thay thế trong trình soạn thảo văn bản yêu thích của bạn để thay đổi MyColumntên thành tên cột thực của bạn.

UPPER("MyColumn") LIKE('%A%') OR
UPPER("MyColumn") LIKE('%B%') OR
UPPER("MyColumn") LIKE('%C%') OR
UPPER("MyColumn") LIKE('%D%') OR
UPPER("MyColumn") LIKE('%E%') OR
UPPER("MyColumn") LIKE('%F%') OR
UPPER("MyColumn") LIKE('%G%') OR
UPPER("MyColumn") LIKE('%H%') OR
UPPER("MyColumn") LIKE('%I%') OR
UPPER("MyColumn") LIKE('%J%') OR
UPPER("MyColumn") LIKE('%K%') OR
UPPER("MyColumn") LIKE('%L%') OR
UPPER("MyColumn") LIKE('%M%') OR
UPPER("MyColumn") LIKE('%N%') OR
UPPER("MyColumn") LIKE('%O%') OR
UPPER("MyColumn") LIKE('%P%') OR
UPPER("MyColumn") LIKE('%Q%') OR
UPPER("MyColumn") LIKE('%R%') OR
UPPER("MyColumn") LIKE('%S%') OR
UPPER("MyColumn") LIKE('%T%') OR
UPPER("MyColumn") LIKE('%U%') OR
UPPER("MyColumn") LIKE('%V%') OR
UPPER("MyColumn") LIKE('%W%') OR
UPPER("MyColumn") LIKE('%X%') OR
UPPER("MyColumn") LIKE('%Y%') OR
UPPER("MyColumn") LIKE('%Z%')

Đối với bất kỳ điều gì phức tạp hơn, thay vào đó tôi sẽ sử dụng các biểu thức thông thường trong SearchCoder trong Python (xem remô-đun ) hoặc đặt dữ liệu vào cơ sở dữ liệu thực và sử dụng các khả năng tìm kiếm chuỗi cụ thể của nó.


2

Bạn có thể xem xét thêm một cột số nguyên vào shapefile của mình, gọi nó là "MATCH". Sau đó sử dụng máy tính trường để thực hiện kiểm tra khớp chuỗi trong khối mã tiền logic. Sau khi trường Kết hợp được điền, bạn có thể chọn trên đó bằng công cụ Chọn theo thuộc tính.

Lưu ý bên lề: Đã lâu rồi nhưng có vẻ như INFO đã hỗ trợ một cột giả (có phải là $ RECSEL?) Cho phép bạn chọn mọi thứ bằng lệnh CALCULATE. Trường hợp sử dụng này chỉ ra một tình huống mà một cái gì đó như thế sẽ hữu ích. IMO, Esri nên tăng cường máy tính trường để hỗ trợ các cột giả để lựa chọn. Máy tính trường sẽ hiển thị trường mục tiêu boolean khi người dùng nhấp chuột phải vào khối không được gắn nhãn bên cạnh tiêu đề trường của hầu hết các cột bên trái.

Cập nhật: Nếu bạn đồng ý, xin vui lòng bỏ phiếu cho ý tưởng của tôi .

nhập mô tả hình ảnh ở đây


Bạn có thể chỉ định ý của bạn bằng cách "kiểm tra khớp chuỗi trong khối mã tiền logic" không ???
jonatr

Trong máy tính trường, nhấp vào hộp kiểm "hiển thị codeblock". Sau đó, bạn có thể sử dụng các hàm thao tác chuỗi VBA. Đừng quá bận tâm, VBA sẽ biến mất ở 10.0. Xem bài viết KB này .
Kirk Kuykendall

2

Chuyển đổi sang cơ sở dữ liệu địa lý cá nhân.

Ký tự đại diện:

  • dấu hỏi ?= bất kỳ ký tự alpha
  • dấu thăng #= bất kỳ ký tự số

[tên điểm] như "12?" nên trả lại 12A, 12b, 12c và cứ thế.


0

Nếu dữ liệu của bạn nằm trên MS-SQL, hãy thử các phạm vi trong phạm vi tìm kiếm như

... where col like '%[a-z]%'

hoặc một số hỗ trợ một chuỗi với bất kỳ một ký tự nào giữa:

`... trong đó col thích '% [az] _ [0-9]%'

Nếu bạn cần tìm một dấu '-', hãy đặt nó ở đầu chuỗi tìm kiếm như

... where col like '%[-a-z0-9]%'

sẽ khớp với '-' hoặc một chữ cái hoặc một số

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.