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?)
arcgis-desktop
sql
arcgis-9.3
Jonatr
sumber
sumber
Jawaban:
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
MyColumn
nama menjadi nama kolom asli Anda.Untuk hal yang lebih kompleks, saya akan menggunakan ekspresi reguler dalam SearchCursor dengan Python (lihat
re
modul ), atau memasukkan data dalam database nyata dan menggunakan kemampuan pencarian string spesifiknya.sumber
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 .
sumber
Konversi ke geodatabase pribadi.
Wildcard:
?
= karakter alfa apa saja#
= karakter numerik apa saja[pointname] seperti "12?" harus mengembalikan 12A, 12b, 12c dan sebagainya.
sumber
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
sumber