KNOWLEDGE BASE

Estrazione di sottostringhe delimitate da caratteri dalle stringhe


Pubblicato: 13 Dec 2013
Data dell'ultima modifica: 11 Mar 2024

Domanda

Come estrarre una stringa di caratteri, delimitata da caratteri iniziali e finali specifici, da una stringa di caratteri più grande.

Ambiente

  • Tableau Desktop

Risposta

Le seguenti istruzioni descrivono come estrarre una sottostringa da una stringa di caratteri lunga e possono essere esaminate nella cartella di lavoro allegata.
  1. Seleziona Analisi > Crea campo calcolato.
  2. Nella finestra di dialogo Campo calcolato visualizzata:
    • Attribuisci un nome al campo calcolato. Nella cartella di lavoro di esempio il campo calcolato è denominato Substring.
    • Nel campo formula, crea un campo calcolato simile a quello riportato di seguito:
      IF CONTAINS([<Dimension>], '<Identifying Character 1>') THEN
      MID(
          [<Dimension>],
          FIND([<Dimension>],'<Identifying Character 1>') + 1,
          FIND([<Dimension>],'<Identifying Character 2>') - (FIND([<Dimension>],'<Identifying Character 1>') +1)
      )
      END
      
  3. Fai clic su OK.
  4. Trascina Substring nello spazio Righe.

Ulteriori informazioni

  • Questo calcolo non include i caratteri identificativi nella sottostringa finale. Per includere i caratteri identificativi, rimuovi "+1" in entrambi i punti in cui appare nel calcolo precedente.
  • L'istruzione IF che utilizza la condizione CONTAINS([<Dimension>], '<Identifying Character 1>') filtra tutte le stringhe che non contengono il primo carattere identificativo. Ciò è necessario perché FIND() restituirà 0 se il carattere non viene trovato, che è ancora una posizione iniziale valida per MID().
  • "Identifying Character 1" sarebbe all'inizio della sottostringa desiderata.
  • "Identifying Character 2" sarebbe alla fine della sottostringa desiderata.
  • Per trovare la sottostringa tra 2 istanze dello stesso carattere (ad esempio, "cane" nella stringa "il *cane* è marrone"), utilizza FINDNTH() invece di FIND() per la seconda istanza. Potrebbe essere simile a:
    • MID(
          [<Dimension>],
          FIND([<Dimension>],'<Identifying Character>') + 1,
          FINDNTH([<Dimension>],'<Identifying Character>', 2) - (FIND([<Dimension>],'<Identifying Character>') +1)
      )
      
Con questo articolo hai risolto il problema?