Estou trabalhando no ArcGIS 9.3.1. Eu tenho um shapefile com um campo de string contendo nomes de pontos como estes:
10
12
12/13
t/9
6577y
1234
12t9
124y67
u9
e assim por diante (e sim, eu sei que parece uma bagunça colossal. Não é o meu design). Usando WHERE MyColumn LIKE '%Search String%'
posso encontrar (usando selecionar por atributo) os que contêm uma letra específica ou uma barra invertida (/).
Como posso selecionar todos os valores que contêm uma letra (neste exemplo: t / 9, 6577y, 12t9, 124y67, u9), sem me importar com qual letra é ou sua posição? (existe uma maneira de especificar uma posição?)
arcgis-desktop
sql
arcgis-9.3
jonatr
fonte
fonte
Respostas:
Para algo rápido e (muito) sujo, você pode usar algo assim para encontrar todos os registros com qualquer um dos caracteres alfabéticos padrão de 26 letras. Use localizar e substituir no seu editor de texto favorito para alterar o
MyColumn
nome para o nome real da coluna.Para algo mais complexo, eu usaria expressões regulares em um SearchCursor em Python (consulte o
re
módulo ) ou colocaria os dados em um banco de dados real e usaria seus recursos específicos de pesquisa de strings.fonte
Você pode considerar adicionar uma coluna inteira ao seu shapefile, chamando-a de "MATCH". Em seguida, use a calculadora de campo para executar testes de correspondência de sequência em um bloco de código pré-lógico. Depois que o campo Corresponder for preenchido, você poderá selecioná-lo usando a ferramenta Selecionar por atributos.
Nota lateral: Já faz muito tempo, mas parecia que o INFO suportava uma pseudo-coluna (era $ RECSEL?) Que permitia selecionar coisas usando um comando CALCULATE. Este caso de uso indica uma situação em que algo assim seria útil. OMI, Esri deve aprimorar a calculadora de campo para suportar pseudo-colunas para seleção. A calculadora de campo apresentaria um campo de destino booleano quando o usuário clicar com o botão direito do mouse no bloco sem rótulo ao lado do cabeçalho de campo da coluna mais à esquerda.
Atualização: se você concordar, vote na minha ideia .
fonte
Converta em um geodatabase pessoal.
Curingas:
?
= qualquer caractere alfa#
= qualquer caractere numérico[pointname] como "12?" deve retornar 12A, 12b, 12c e assim por diante.
fonte
Se os seus dados estiverem no MS-SQL, tente intervalos dentro de pesquisas, como
... where col like '%[a-z]%'
ou um número após uma string com qualquer caractere entre:
`... onde col como '% [az] _ [0-9]%'
Se você precisar procurar um '-', coloque-o no início da string de pesquisa, como
... where col like '%[-a-z0-9]%'
corresponderia a '-' ou uma letra ou um número
fonte