Funções de string SQLite: REPLACE, SUBSTR, TRIM, ROUND

O SQLite é, por padrão, equipado com uma lista de funções integradas na biblioteca SQLite. Você também pode adicionar outras funções personalizadas usando a linguagem C para estender as funções principais.

Observe que, para todos os seguinteswing exemplos, você deve executar o sqlite3.exe e abrir uma conexão com o banco de dados de amostra como flowing:

Passo 1) Nesta etapa,

  1. Abra Meu Computador e navegue até o seguintewing diretório “C:\sqlite" e depois
  2. abrir "sqlite3.exe":

Funções de string SQLite

Passo 2) Abra o banco de dados “TutoriaisSampleDB.db” pelo seguintewing comando:

Funções de string SQLite

Agora você está pronto para executar qualquer pergunta e tente qualquer consulta usada no seguintewing .

Encontrando LENGTH de uma String no SQLite

Para encontrar o comprimento de uma string, use LENGTH(X) onde X é um valor de string. Se X for um valor nulo, a função de comprimento retornará um valor nulo.

Você também pode usar a função de comprimento com valores numéricos para obter o comprimento do valor numérico.

Exemplo:

Na sequênciawing Por exemplo, tentaremos a sintaxe da função LENGTH com valores como a seguirwing:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Isso lhe dará:

Encontrando LENGTH de uma String no SQLite

O resultado é o seguintewing:

  • LENGTH('A string') retorna 8 que é o comprimento da string “A string”.
  • COMPRIMENTO(NULO) retorna nulo.
  • LENGTH(20) retorna 2, porque 20 tem 2 comprimentos.
  • COMPRIMENTO(20.5) retorna 4; O ponto flutuante “.” é contado como um caractere, então você terá quatro caracteres – os 3 caracteres que são o comprimento dos números. Mais um caractere para o ponto flutuante “.”.

Mudança de caixa com função UPPER e função LOWER

UPPER(X) retornará a mesma string x, mas representará todos os caracteres da string em caracteres maiúsculos.

LOWER(X) retornará a mesma string x, mas representará todos os caracteres da string em caracteres pequenos.

UPPER e LOWER retornam valores nulos se você passar um valor nulo para eles.

Se você passar valores numéricos para UPPER ou LOWER, ambos retornarão o valor numérico exato.

Exemplo:

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Isso lhe dará:

Exemplo de funções UPPER e LOWER em SQLite

O resultado é o seguintewing:

  • UPPER('uma string') retorna a string “uma linha”em representação de letra maiúscula“UMA LINHA".
  • LOWER('A STRING') retorna a string “UMA LINHA”em representação de letras minúsculas“uma linha".
  • UPPER(20), LOWER(20) retorna o mesmo número, pois não têm nenhum efeito sobre os números.
  • UPPER(NULL), LOWER(NULL) retorna nulo porque passamos um valor nulo para eles.

Função SQLite SUBSTR

A função SUBSTR retorna um número específico de string, começando em uma posição específica. Você pode passar três operandos para a função, assim “SUBST(X,Y,Z)”como seguewing:

  • X é a string literal ou a coluna de string a ser analisada. Você pode passar um valor literal (valor estático) ou um nome de coluna, e neste caso o valor será lido a partir dos valores da coluna.
  • Y é a posição inicial para subtrair a string a partir dela.
  • Z é o número de caracteres a serem analisados ​​​​a partir da posição específica Y. Este número é opcional, você pode ignorá-lo e, neste caso, SQLite irá subtrair a string começando da posição Y e informar o final da string.

Exemplo:

Na sequênciawing consulta, usaremos a função SUBSTR para obter os 4 caracteres começando no segundo caractere dos nomes dos alunos:

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Isso lhe dará:

Exemplo de função SUBSTR em SQLite

  • SUBSTR(NomeAluno, 2, 4) substring a string “Nome do aluno”começando no segundo caractere e retornando os próximos 4 caracteres.
  • Porém, na função SUBSTR(NomeAluno, 2) não especificamos um número para os caracteres a serem retornados, por isso o SQLite retornou todos os caracteres restantes no “Nome do aluno” partindo da segunda posição.

Alterando partes de uma String com a função SQLite REPLACE

REPLACE é usado para substituir cada string ocorrida em outra string por uma string.

REPLACE(X, Y, Z) – X é a coluna ou literal da string de entrada. Y é a string a ser substituída pela string Z. Observe que ela substituirá qualquer ocorrência da string Y por Z, não apenas uma.

Exemplo:

Na sequênciawing consulta, substituiremos todas as ocorrências da string “xx”com a string“SQLite":

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Isso lhe dará

Exemplo de função REPLACE em SQLite

  • A função de substituição substituiu todas as strings “xx”com a string“SQLite".
  • Então a saída será “SQLite é muito leve, SQLite é fácil de aprender”.

Cortando espaços em branco com a função SQLite TRIM

TRIM remove espaços em branco do início ou do final da string. Não removerá nenhum espaço no meio da string, apenas no início ou no final.

Exemplo:

Na sequênciawing consulta, usaremos a função TRIM para remover os espaços em branco do início e do final da string.

Observe que o operador de concatenação “||” é usado para adicionar um “;” extra. até o final da string. Para mostrar que os espaços vazios foram removidos da janela preta.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Isso lhe dará:

Exemplo de função TRIM em SQLite

  • Observe como os espaços em branco foram removidos do início e do final da string, substituídos por ' ; ' no final.

Lendo Valores Absolutos com Função SQLite ABS

A função ABS retorna o valor absoluto de um valor numérico. O valor absoluto é o valor numérico sem qualquer sinal positivo ou negativo. ABS(X) retorna um valor dependendo do valor de X conforme a seguirwing:

  • O valor absoluto de X se X for um valor numérico.
  • Um valor NULL se X for um valor nulo.
  • Valor “0.0” se X for uma string.

Exemplo:

Na sequênciawing consulta, tentaremos obter o valor absoluto de uma string, um número e um valor nulo usando a função ABS:

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Isso lhe dará:

Exemplo de função ABS em SQLite

Os resultados como seguewing:

  • ABS(-2), ABS(+2) retorna 2, porque 2 é o valor absoluto para “-2” e “+2”.
  • ABS('a string') retorna “0.0” porque você passou um valor de string e não um valor numérico.
  • ABS(null) retorna null porque você passou um valor nulo para ele.

Arredondando valores com a função ROUND no SQLite

Números decimais são números com ponto flutuante “.” nele, por exemplo, “20.5”, “8.65”. A parte à esquerda do ponto flutuante é chamada de parte inteira, e a parte à direita do ponto flutuante é chamada de parte decimal.

Números inteiros são aqueles números sem nenhum ponto flutuante. Por exemplo, “20”, “8”.

ROUND(X) converte os valores decimais ou colunas X em apenas números inteiros. A parte inteira que é a parte à esquerda da vírgula será retornada e todos os dígitos à direita da vírgula serão removidos.

Exemplo:

Na sequênciawing consulta, tentaremos a função ROUND com diferentes opções:

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Isso lhe dará:

Exemplo de função ROUND em SQLite

O resultado como seguewing:

  • ROUND(12.4354354) – retorna o valor “12”, porque você não especificou o número de dígitos. Então, o SQLite removeu toda a parte decimal.
  • ROUND(12.4354354, 2) – retorna o valor “12.44”, porque você especificou apenas 2 dígitos para arredondar, que são os dois dígitos à direita da vírgula decimal.
  • ROUND(NULL) – retorna nulo porque você passou um valor nulo para ele.
  • ROUND('a string') – retorna o valor “0.0” porque você passou um valor de string para ele.

Encontrando o tipo de dados da expressão com a função TYPEOF

Se quiser descobrir o tipo de uma coluna ou um valor literal, você pode usar a função TYPEOF para fazer isso.

A função TYPEOF(X), pelo seu nome, retorna o tipo de dados da expressão X. Ela retorna um valor de string indicando o tipo de dados de X. Ela retorna o valor com base nos tipos de dados, seja um valor “NULL”, real, texto, inteiro,…, etc.

Exemplo:

Na sequênciawing consulta, tentaremos a função TYPEOF com diferentes tipos de valores literais:

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Isso lhe dará:

Exemplo de função TYPEOF em SQLite

Os resultados retornados são os seguinteswing:

  • TYPEOF(null) – retorna nulo porque você passou um valor nulo para ele.
  • TYPEOF(12) – retorna um número inteiro, pois 12 é um número inteiro.
  • TYPEOF(12.5) – retorna REAL, pois 12.5 é um número real.
  • TYPEOF('a string') – retorna texto, pois “uma string” é um texto.

Encontrando o último registro inserido com SQLite LAST_INSERT_ROWID

SQLite atribui uma chave inteira (Id) para todas as linhas em todas as tabelas. Este número é usado para identificar exclusivamente essas linhas.

Quando você INSERT uma nova linha em uma tabela, o SQLite atribuirá ao rowid um valor único.

Se a tabela tiver uma chave primária declarada em apenas uma coluna e essa coluna for do tipo de dados INTEGER, então o valor desta coluna será usado como rowid.

A função LAST_INSERT_ROWID() retorna o ROW_ID da última linha inserida em qualquer tabela do banco de dados. Observe que não é necessário nenhum operando.

Exemplo:

Na sequênciawing Por exemplo, executaremos a função LAST_INSERT_ROWID() da seguinte forma:

SELECT LAST_INSERT_ROWID();

Isso lhe dará:

Exemplo de função LAST_INSERT_ROWID em SQLite

  • LAST_INSERT_ROWID() retorna 0 porque não há linhas inseridas em nenhuma tabela na conexão de banco de dados atual.

Agora, vamos inserir um novo aluno e executar a função LAST_INSERT_ROWID() novamente após a instrução insert, assim:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Isso lhe dará:

Exemplo de função LAST_INSERT_ROWID em SQLite

  • Após inserirmos um novo aluno com id 11, LAST_INSERT_ROWID() retornará o último id de linha inserido que é 11.

Obtendo a versão da sua biblioteca SQLite

Para obter a versão da sua biblioteca SQLite, você deve chamar a função SQLITE_VERSION().

Exemplo:

Vamos descobrir qual é a versão do SQLite que estamos usando executando o seguintewing comando:

SELECT SQLITE_VERSION();

Isso lhe dará:

Exemplo para obter a versão da sua biblioteca SQLite

SQLITE_VERSION() retorna 3.9.2 que é a versão do SQLite que estamos usando.

Criando funções definidas pelo usuário e agregando funções definidas pelo usuário

Para alguns usuários, as funções principais do SQLite são limitadas. Talvez eles precisem adicionar funções personalizadas para suas necessidades personalizadas.

SQLite não oferece suporte à criação de funções definidas pelo usuário. Ao contrário de outros sistemas de gerenciamento de banco de dados, você não pode criar funções definidas pelo usuário diretamente no SQLite.

No entanto, você pode criar uma função usando linguagens de programação como C#, C, PHP ou C++ e anexar essa função às funções principais do SQLite na própria biblioteca SQLite, usando “sqlite3_create_function”função. Então você pode reutilizá-los em seu banco de dados.

Exemplo:

Na sequênciawing exemplo, criaremos uma função definida pelo usuário usando C# linguagem de programação e adicione-a às funções SQLite:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Este trecho de código está escrito no Linguagem de Programação C#; ele cria uma função C# usando o código C#.

O nome da função será “DoubleValor” ele pega um parâmetro e retorna seu valor multiplicado por 2.

Observe que o C# adiciona automaticamente esta função ao SQLite. Tudo que você precisa é compilar e executar este código. Então o C# adicionará essa função com o mesmo nome à lista de funções SQLite. Então você pode usar esta função no SQLite.

Da mesma forma, usando linguagens de programação como C#, C, PHP ou C++, você também pode criar funções agregadas definidas pelo usuário. Que são usados ​​para estender as funções agregadas no SQLite e usá-las para criar funções agregadas personalizadas.

Resumo

  • SQLite fornece um conjunto abrangente de funções integradas que facilitam o trabalho com tabelas e colunas do banco de dados, como vimos. Você pode usar essas funções com colunas e também com valores literais em qualquer expressão em suas consultas SQL.
  • Você também pode usar a função de comprimento com valores numéricos para obter o comprimento do valor numérico.
  • UPPER e LOWER retornam valores nulos se você passar um valor nulo para eles.
  • A função SUBSTR retorna um número específico de string, começando em uma posição específica.
  • REPLACE é usado para substituir cada string ocorrida em outra string por uma string.
  • TRIM remove espaços em branco do início ou do final da string.
  • A função ABS retorna o valor absoluto de um valor numérico.
  • ROUND(X) converte os valores decimais ou colunas X em apenas números inteiros.
  • A função TYPEOF(X), pelo seu nome, retorna o tipo de dados da expressão X.
  • A função LAST_INSERT_ROWID() retorna o ROW_ID da última linha inserida em qualquer tabela do banco de dados.