ArcGIS запрашивает определенный символ (ы) в определенной части поля

9

Используя ArcGIS 10.2.2, у меня есть строковое поле в таблице атрибутов SDE. Мне нужна помощь в создании запроса для выбора всех записей, которые имеют ноль в 6-м и 7-м символе поля (т. Е. 1995-0023A). Чтобы помочь мне лучше понять этот тип запроса, я также хотел бы видеть запрос, который выбирает записи с нулем только в 6-м символе поля. Затем я могу использовать предложение «и» и продублировать его, чтобы выбрать 7-й символ.

Я пробовал варианты, "FIELD1" LIKE '%00_______'но он не выбирает записи с двойными нулями в правильном месте в строке.

Стив
источник
Я пробовал варианты "FIELD1" LIKE "% 00 _______", но он не выбирает записи с двойными нулями в правильном месте строки.
Стив
Что-то вроде "FIELD1" LIKE '_____00%'? Это будет использовать пять символов подстановки, затем ваши два нуля, а затем еще один символ подстановки для остальной части строки. В какой базе данных это? SQL Server, Oracle, что-то еще? Пожалуйста, измените ваш вопрос, включив в него информацию из вашего комментария выше, а также информацию о вашей базе данных (выпуск версии и т. Д.)
Midavalo
"field_name" LIKE '% 00%', это вернет все поля с двойными нулями рядом друг с другом, не используя 6-ю или 7-ю позицию, если это поможет.
NULL
Подчеркивание _используется в некоторых базах данных как подстановочный знак с одним символом. Процент %подстановочных знаков для всех мест персонажа.
Мидавало
1
Спасибо, ребята, похоже, у меня был обратный запрос. Предложение Мидавало сработало: FIELD1 LIKE '_____ 00%'. Это БД Oracle.
Стив

Ответы:

12

Подчеркивание _используется в некоторых базах данных как подстановочный знак с одним символом. Процент %подстановочных знаков для всех мест персонажа.

Поэтому что-то вроде "FIELD1" LIKE '_____00%'должно работать, в зависимости от типа базы данных. Это будет использовать пять символов подстановки, затем ваши два нуля, а затем еще один символ подстановки для остальной части строки.

Мидавало
источник
это будет работать в БД MS SQL Server?
NULL
1
@Joe Да, это так и должно быть - я использовал этот метод для подобных запросов в прошлом в SQL Server, но я не могу проверить это прямо сейчас.
Мидавало
3

Следующее выберет все записи, которые имеют ноль в позиции 6-го символа, а также в позиции 7-го символа.

FIELDNAME like '_____0%' and FIELDNAME like '______0%'

Есть пять подчеркиваний, предшествующих нулю в первой части выражения, и затем шесть подчеркиваний, предшествующих нулю во второй части. Подчеркивание - это «подстановочный знак», который требует присутствия любого символа (может быть пробел, число, буква, символ и т. Д.). Подстановочный знак процента (%) позволяет что-либо следовать (также не позволяет ничего следовать - не требует никаких символов).

Более краткий способ сделать это

FIELDNAME like '_____00%'
Мэтт Гудман
источник
-1

Это зависит от СУБД, хотя в большинстве случаев должно работать следующее:

SUBSTRING (имя поля, 6, 2) = '00'

CaptRay
источник
Добро пожаловать в ГИС ЮВ! Как новый пользователь , пожалуйста , возьмите тур , чтобы узнать о нашей ориентированной Q & A формате. У вас была эта работа успешно? По моему опыту, SUBSTRING()никогда не работал в ограниченном SQL ArcMap. Это где вы используете это, или вы используете это в другом месте? Не могли бы вы отредактировать свой ответ, чтобы расширить это?
Мидавало
ОП заявил, что это в SDE, а не в файловой базе геоданных, mdb или shapefile. SDE диктует СУРБД. Запрос ArcMap основан на части где SQL, основанной на конкретной RDBMS, где существует SDE (важно знать, в какой базе данных находятся данные, так как синтаксис может отличаться). Да, я успешно выступал много раз за 20 с лишним лет в качестве администратора SDE. Я добавил это в качестве опции, так как не все RDBMS будут использовать опцию '_'. Мое решение упрощенное и, возможно, старое, но оно работает в среде SDE.
CaptRay
Я спросил, как я проверял это на прошлой неделе, и это не сработало. Возможно, я сделал это неправильно, но это не сработало для меня.
Мидавало
В SDE? Если да, то в какой СУБД находится ваш SDE? Воистину, мне любопытно, так как среда СУРБД меня заинтриговала, особенно из-за различий. Я проверил это (успешно на Oracle и SQL Server) перед публикацией. SUBSTRING будет недействительным для шейп-файлов. Это будет работать для файловых баз геоданных.
CaptRay
Кстати, синтаксис Oracle является SUBSTR.
CaptRay