itString

Aceita qualquer texto. A entrada não é validada em relação a nenhum formato — qualquer string é um valor válido.

strings entre aspas

Um token que comece com uma aspa simples é tratado como um string entre aspas. As aspas que o rodeiam são removidas antes de o valor ser armazenado em Values[]. Uma aspa simples literal dentro de um string entre aspas é representada duplicando-a.

Entrada: 'O''Brien'   →   Values[0]: O'Brien
 SQLValues[0]: 'O''Brien'

Os tokens sem aspas são armazenados tal como estão. Os espaços em branco à esquerda e à direita são preservados, a menos que opTrim esteja definido.

Separador de lista

Tanto , como ; são aceites como separadores de lista. Uma vírgula dentro de uma região entre aspas não é tratada como um separador.

Entrada: 'smith, jones'   →   otSingleValue  (a vírgula está dentro das aspas)
Entrada: smith, jones     →   otList (a vírgula está fora das aspas)
Entrada: smith; jones     →   otList

Intervalo

O separador de intervalo (por predefinição ~) divide a entrada em dois limites. Os valores entre aspas de ambos os lados do separador deixam de estar entre aspas após a divisão.

Entrada: alpha~omega →   otRange, Valores: ['alpha', 'omega']
Entrada: 'alpha'~'omega'  →   otRange, Valores: ['alpha', 'omega']

Não é aplicada qualquer verificação de ordem aos intervalos string. O erro ERR_INVALID_RANGE nunca é gerado para itString.

Saída SQL

Cada token é colocado entre aspas simples. As aspas simples internas são duplicadas (convenção QuotedStr).

Valores[0]: O'Brien   →   SQLValores[0]: 'O''Brien'

CONTAINS ANY / CONTAINS ALL com listas

Quando SqlOperator é sopContainsAny ou sopContainsAll e a entrada produz uma lista, os tokens individuais são agrupados num único argumento, em vez de gerarem IN (…). No ElevateDB, o argumento agrupado é passado para o predicado nativo CONTAINS ANY / CONTAINS ALL. Em todos os outros dialetos, as palavras são unidas com % num padrão LIKE. Os tokens vazios (incluindo os strings '' entre aspas e os tokens que foram resolvidos como NULL através de opEmptyStringNull) são excluídos do argumento agrupado. A sua inclusão introduziria espaços duplos no argumento do ElevateDB ou %% no padrão LIKE, o que não faz sentido em nenhum dos casos.

Entrada: "hello;;world" + sopContainsAny, sqlElevateDB
  Expressão SQL: CONTAINS ANY 'hello world'   (token do meio vazio excluído)

Entrada: "hello;;world" + sopContainsAny, sqlMySQL
  Expressão SQL: LIKE '%hello%world%' ESCAPE '\'

Entrada: "hello;;world" + sopContainsAny, sqlBDEParadox
  Expressão SQL: LIKE '%hello%world%' (sem cláusula ESCAPE)

ESCAPE '\' é acrescentado para todos os dialetos, exceto sqlBDEParadox. A camada SQL do BDE não oferece um suporte fiável à cláusula ESCAPE, pelo que esta é omitida nesse dialeto. Os caracteres %, _ e \ continuam a ser substituídos no padrão para evitar correspondências acidentais com caracteres curinga, mas sem a cláusula ESCAPE, um \ literal na entrada do utilizador não pode ser representado com exatidão. SQLValues[] continua a refletir o resultado real da análise do token para cada posição (ou seja, o token do meio aparece como '' ou NULL em SQLValues[]); apenas a estrutura SQLExpression ignora tokens vazios.

Efeito das opções

opTrim remove os espaços em branco à esquerda e à direita de cada valor de token. Para itString, esta é a única forma de remover os espaços circundantes; sem ela, estes são preservados como parte do valor.

opEmptyStringNull converte tokens vazios (incluindo os vazios entre aspas strings '') em NULL no SQL, em vez de ''.

opUpperCase e opLowerCase convertem os valores dos tokens para maiúsculas ou minúsculas.

Tanto Values[] como o conteúdo dentro de SQLValues[] são atualizados. As palavras-chave SQL (BETWEEN, IN, NULL, etc.) não são afetadas. Se ambas as opções estiverem ativadas, opUpperCase tem prioridade.

opRequired e opNotNull comportam-se conforme descrito em Opções de análise.

(C) 2026 Easygate, Lda