Ekspresi SQL untuk menemukan string termasuk huruf di ArcGIS Desktop?


8

Saya sedang mengerjakan ArcGIS 9.3.1. Saya memiliki shapefile dengan bidang string yang berisi nama titik seperti ini:

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

dan seterusnya (dan ya, saya tahu itu terlihat seperti kekacauan besar. Ini bukan desain saya). Menggunakan WHERE MyColumn LIKE '%Search String%'I dapat menemukan (menggunakan pilih dengan atribut) yang berisi huruf tertentu atau backslash (/).

Bagaimana saya bisa memilih semua nilai yang mengandung huruf (dalam contoh ini: t / 9, 6577y, 12t9, 124y67, u9), tidak peduli huruf apa itu atau posisinya? (adakah cara untuk menentukan posisi?)


3
Anda yakin tidak hanya membanting kepala di keyboard dan mengeluarkannya? : P
blah238

1
Sayangnya tidak ada.
Jonatr

Jawaban:


2

Untuk sesuatu yang cepat dan kotor, Anda dapat menggunakan sesuatu seperti ini untuk menemukan semua catatan dengan karakter alfabet 26 huruf standar. Gunakan temukan dan ganti di editor teks favorit Anda untuk mengubah MyColumnnama menjadi nama kolom asli Anda.

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%')

Untuk hal yang lebih kompleks, saya akan menggunakan ekspresi reguler dalam SearchCursor dengan Python (lihat remodul ), atau memasukkan data dalam database nyata dan menggunakan kemampuan pencarian string spesifiknya.


2

Anda dapat mempertimbangkan menambahkan kolom integer ke shapefile Anda, menyebutnya "MATCH". Kemudian gunakan kalkulator bidang untuk melakukan tes pencocokan string dalam blok kode pra-logika. Setelah bidang Pencocokan diisi, Anda dapat memilihnya menggunakan alat Pilih oleh atribut.

Catatan: Sudah lama sekali tetapi sepertinya INFO mendukung kolom semu (apakah itu $ RECSEL?) Yang memungkinkan Anda memilih hal-hal menggunakan perintah HITUNG. Kasus penggunaan ini menunjukkan situasi di mana sesuatu seperti itu akan sangat membantu. IMO, Esri harus meningkatkan kalkulator lapangan untuk mendukung kolom semu untuk seleksi. Kalkulator bidang akan menampilkan bidang target boolean ketika pengguna mengklik kanan pada blok yang tidak berlabel di sebelah tajuk bidang kolom paling kiri.

Pembaruan: Jika Anda setuju, silakan pilih ide saya .

masukkan deskripsi gambar di sini


Bisakah Anda menentukan apa yang Anda maksud dengan "tes pencocokan string dalam blok kode pra-logika" ???
Jonatr

Di kalkulator bidang, klik kotak centang "tunjukkan kode kunci". Anda kemudian harus dapat menggunakan fungsi manipulasi string VBA. Jangan terlalu terbawa suasana, VBA hilang di 10.0. Lihat artikel KB ini .
Kirk Kuykendall

2

Konversi ke geodatabase pribadi.

Wildcard:

  • tanda tanya ?= karakter alfa apa saja
  • tanda pon #= karakter numerik apa saja

[pointname] seperti "12?" harus mengembalikan 12A, 12b, 12c dan sebagainya.


0

Jika data Anda menggunakan MS-SQL coba rentang dalam pencarian seperti pencarian

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

atau nomor afer string dengan salah satu karakter antara:

`... di mana col menyukai '% [az] _ [0-9]%'

Jika Anda perlu mencari '-', letakkan di awal string pencarian seperti

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

akan cocok dengan '-' atau huruf atau angka

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.