열 QGIS 속성 테이블 결합


10

QGIS 속성 테이블에 두 개의 열이 있습니다. 첫 번째 열에는 두 번째 열에 포함되지 않은 값과 그 반대의 값이 포함됩니다. 첫 번째와 두 번째 열의 값을 모두 포함하는 새 필드를 추가하고 싶습니다. "Value 1 + Value 2)처럼 간단하다고 생각했지만 Null 결과 만 제공 합니다. 모든 값은 문자열입니다.

Value 1| Value 2 | New Column
-------------------------
 Bacon |         | Bacon
 Eggs  |         | Eggs
       | Cheese  | Cheese
       | Ham     | Ham  

"첫 번째 및 두 번째 열의 값을 모두 포함하는 새 필드를 추가하고 싶습니다." 연결을 나타내지 만 예제에서는 값이있는 두 필드가 모두 발생하지 않습니다. 무엇 이니?
Gabriel C.

@GabrielC. 두 열 모두에 값이 없습니다. 한 열이 다른 열에없는 값을가집니다. 이게 도움이 되길 바란다.
Dunuts

답변:


22

SQL (및 표현식)의 많은 연산자와 함수 NULL는 매개 변수 중 하나가NULL

다음 예는 열이있는 레이어에 여러 사업자의 동작을 보여 AB.

"A" + "B"

  • NULL + 'text'NULL
  • 'a' + 'b''ab'

"A" || "B"

  • NULL || 'text'NULL
  • 'a' || 'b''ab'

CONCAT("A", "B")

  • CONCAT(NULL, 'text')'text'
  • CONCAT('a', 'b')'ab'

COALESCE("A", "B")

  • COALESCE(NULL, 'text')'text'
  • COALESCE('a', 'b')'a'
  • COALESCE('a', NULL)'a'
  • COALESCE(NULL, NULL, 'Other')'Other'

귀하의 경우 여러 값이 CONCAT있거나 COALESCE없는 예상 동작에 따라 작업 하거나 작업하려고 합니다.


1
이 답변이 받아 들여지지 않는 것은 너무 나쁘다. 다른 연산자가 어떻게 행동하는지 설명하면서 OP에 언급 된 문제를 일으키는 것은 이것이 최선이라고 생각합니다.
Gabriel C.

15

필드 계산기를 사용하여 다음 단계를 수행 할 수 있습니다.

1- 새 필드 만들기 (문자열)

2- "Coalesce"기능 사용

       coalesce(  "Value 1" , "Value 2" , 'value if No data')

Colaesce 함수는 NULL이 아닌 첫 번째를 반환합니다.

여기에 이미지 설명을 입력하십시오


3

레이어 패널에서 레이어를 선택하고 python 콘솔을 열고이 스 니펫을 실행하십시오.

layer = iface.activeLayer()
layer.startEditing()
fields = layer.pendingFields()
fieldIndex = fields.indexFromName('newColumn')
for feature in layer.getFeatures():
    if feature['value1']:
        layer.changeAttributeValue(feature.id(),fieldIndex,feature['value1'])
    if feature['value2']:
        layer.changeAttributeValue(feature.id(),fieldIndex,feature['value2'])
    if feature['value1'] and feature['value2']:
        layer.changeAttributeValue(feature.id(),fieldIndex,feature['value2'] + ' ' + feature['value2']) # not sure what you want to do here if values found in both value1 and value2 fields
layer.commitChanges()

2

당신은 또한 필드 계산기를 사용하여 새 필드를 추가하고 그에게 다음을 먹일 수 있습니다

CASE WHEN "column1" IS NULL
THEN "column2"
ELSE "column1"
END
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.