¿Expresión SQL para encontrar cadenas que incluyen letras en ArcGIS Desktop?

8

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?)

jonatr
fuente
3
¿Estás seguro de que no te golpeaste la cabeza con el teclado y lo sacaste? : P
blah238
1
Lamentablemente no.
jonatr

Respuestas:

2

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 MyColumnnombre a su nombre de columna real.

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

Para cualquier cosa más compleja, en su lugar, usaría expresiones regulares en un SearchCursor en Python (vea el remódulo ), o coloque los datos en una base de datos real y use sus capacidades específicas de búsqueda de cadenas.

blah238
fuente
2

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 .

ingrese la descripción de la imagen aquí

Kirk Kuykendall
fuente
¿Puede especificar qué quiere decir con "pruebas de coincidencia de cadenas en un bloque de código prelógico"?
jonatr
En la calculadora de campo, haga clic en la casilla de verificación "mostrar bloque de código". Entonces debería poder usar las funciones de manipulación de cadenas de VBA. Sin embargo, no te dejes llevar, VBA desaparece a las 10.0. Ver este artículo de KB .
Kirk Kuykendall
2

Convierte a una geodatabase personal.

Comodines:

  • signo de interrogación ?= cualquier carácter alfa
  • signo de libra #= cualquier caracter numérico

[nombre del punto] como "12?" debería devolver 12A, 12b, 12c y así sucesivamente.

gkh
fuente
0

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

Cristiano4145
fuente