Estoy trabajando en ArcGIS 9.3.1. Tengo un shapefile con un campo de cadena que contiene nombres de puntos como estos:
10
12
12/13
t/9
6577y
1234
12t9
124y67
u9
y así sucesivamente (y sí, sé que parece un desastre colosal. No es mi diseño). Usando WHERE MyColumn LIKE '%Search String%'
puedo encontrar (usando seleccionar por atributo) los que contienen una letra específica o una barra invertida (/).
¿Cómo puedo seleccionar todos los valores que contienen una letra (en este ejemplo: t / 9, 6577y, 12t9, 124y67, u9), sin importar qué letra es o cuál es su posición? (¿hay alguna manera de especificar una posición?)
arcgis-desktop
sql
arcgis-9.3
jonatr
fuente
fuente
Respuestas:
Para algo rápido y (muy) sucio, puede usar algo como esto para encontrar todos los registros con cualquiera de los caracteres estándar del alfabeto de 26 letras. Use buscar y reemplazar en su editor de texto favorito para cambiar el
MyColumn
nombre a su nombre de columna real.Para cualquier cosa más compleja, en su lugar, usaría expresiones regulares en un SearchCursor en Python (vea el
re
módulo ), o coloque los datos en una base de datos real y use sus capacidades específicas de búsqueda de cadenas.fuente
Puede considerar agregar una columna entera a su archivo shape, llamándolo "COINCIDIR". Luego, use la calculadora de campo para realizar pruebas de coincidencia de cadenas en un bloque de código prelógico. Después de completar el campo Coincidencia, puede seleccionarlo con la herramienta Seleccionar por atributos.
Nota al margen: ha pasado mucho tiempo, pero parecía que INFO admitía una pseudo columna (¿era $ RECSEL?) Que le permitía seleccionar cosas usando un comando CALCULAR. Este caso de uso señala una situación en la que algo así sería útil. En mi opinión, Esri debería mejorar la calculadora de campo para admitir pseudo columnas para la selección. La calculadora de campo presentaría un campo de destino booleano cuando el usuario haga clic derecho en el bloque sin etiqueta al lado del encabezado de campo de la columna más a la izquierda.
Actualización: si está de acuerdo, vote por mi idea .
fuente
Convierte a una geodatabase personal.
Comodines:
?
= cualquier carácter alfa#
= cualquier caracter numérico[nombre del punto] como "12?" debería devolver 12A, 12b, 12c y así sucesivamente.
fuente
Si sus datos están en rangos de prueba de MS-SQL dentro de expresiones de búsqueda como
... where col like '%[a-z]%'
o un número después de una cadena con cualquier carácter entre:
`... donde col como '% [az] _ [0-9]%'
Si necesita buscar un '-' colóquelo al comienzo de la cadena de búsqueda como
... where col like '%[-a-z0-9]%'
coincidiría con '-' o una letra o un número
fuente