Referência · DAX (Power BI)
DAX: comparar texto, SEARCH x FIND e a função VALUE
Em DAX, comparar e converter texto tem regras próprias. O operador = ignora maiúsculas, o EXACT diferencia, o FIND diferencia e o SEARCH não, e o VALUE depende do idioma. Os resultados abaixo foram executados no Power BI Desktop em português do Brasil.
Cada resultado desta página foi obtido executando a expressão no motor do Power BI Desktop (Analysis Services 17.0.57.16), em um Windows em português do Brasil. Um teste automático do Me Ajuda Flow confere que o texto da página é idêntico ao valor registrado. As expressões usam a sintaxe padrão do DAX (vírgula entre argumentos e ponto decimal); o editor do Power BI Desktop pode mostrar os separadores da configuração regional do Windows.
Exemplos executados
| Expressão | Resultado | Observação |
|---|---|---|
"Ana" = "ana" | TRUE | O operador = não diferencia maiúsculas. |
EXACT("Ana", "ana") | FALSE | EXACT diferencia maiúsculas. |
SEARCH("B", "abc") | 2 | SEARCH não diferencia: acha o B em abc, na posição 2. |
FIND("B", "abc", 1, 0) | 0 | FIND diferencia; com o quarto argumento 0, devolve 0 quando não encontra. |
LEFT("abc", 2) | "ab" | |
MID("abcdef", 2, 3) | "bcd" | A posição inicial do MID começa em 1. |
SUBSTITUTE("a-b", "-", "/") | "a/b" | |
UPPER("ação") | "AÇÃO" | |
LEN("Olá") | 3 | |
"a" & 1 | "a1" | O operador & junta texto e número, convertendo o número. |
VALUE("1.234,56") | 1234.56 | No Windows em português, o texto no padrão brasileiro é entendido. |
VALUE("1,5") | 1.5 | |
VALUE("1234.56") | 123456 | Cuidado: o ponto é separador de milhar no idioma português, e o resultado é 123456, não 1234,56. |
VALUE("abc") | Erro. Query (1, 19) Não é possível converter o valor 'abc' do tipo Text no tipo Number. | Um texto que não é número gera erro. |
Pegadinhas
- O = ignora maiúsculas em DAX. No Power Automate, equals('Ana', 'ana') devolve false (testado em 09/11/2026). Ao migrar uma regra, a comparação muda de resultado.
- VALUE e a conversão automática dependem do idioma do sistema. Em um sistema em inglês, o esperado é que VALUE("1234.56") devolva 1234,56 (não testado aqui). Padronize a origem dos dados.
- O texto que não é número gera erro no VALUE. Para tratar o erro, use IFERROR ou valide antes.
- FIND diferencia maiúsculas e SEARCH não. Se o resultado não for o esperado, confira qual dos dois você usou.
- As posições de MID, FIND e SEARCH começam em 1.
Quando usar
- = para comparações em que a caixa não importa, como categorias digitadas à mão.
- EXACT quando a caixa importa, como em códigos.
- VALUE só quando o texto vem sempre no mesmo padrão e no mesmo idioma.
Perguntas frequentes
Como converter "1.234,56" de forma segura?
Em um modelo em português, VALUE("1.234,56") deu 1234,56 neste teste. Para não depender do idioma, troque os separadores com SUBSTITUTE antes de converter.
LEN conta caracteres ou bytes?
Caracteres. No teste, LEN("Olá") devolveu 3, mesmo com a letra acentuada.