- Categorias:
INSERT¶
Substitui uma subcadeia de caracteres de comprimento especificado, começando na posição determinada, por uma nova cadeia de caracteres ou valor binário.
Esta função não deve ser confundida com o comando INSERT DML.
Sintaxe¶
INSERT( <base_expr>, <pos>, <len>, <insert_expr> )
Argumentos¶
base_expr
A cadeia de caracteres ou expressão BINARY para a qual você deseja inserir/substituir caracteres.
pos
O offset no qual se começa a inserir caracteres. Isso é baseado em 1, não em 0. Em outras palavras, o primeiro caractere da cadeia de caracteres é considerado como estando na posição 1, não na posição 0. Por exemplo, para inserir no início da cadeia de caracteres, defina
pos
como 1.Os valores válidos estão entre 1 e um a mais do que o comprimento da cadeia de caracteres (inclusive).
A configuração
pos
para obter mais de um comprimento da cadeia de caracteres torna a operação equivalente a um apêndice. (Isto também requer que o parâmetrolen
seja 0 porque você não deve tentar apagar nenhum caractere além do último caractere).len
O número de caracteres (começando em
pos
) que você deseja substituir. Os valores válidos variam de 0 até o número de caracteres entrepos
e o fim da cadeia de caracteres. Se isto for 0, significa adicionar os novos caracteres sem excluir os caracteres existentes.insert_expr
A cadeia de caracteres a ser inserida em
base_expr
. Se esta cadeia de caracteres estiver vazia, e selen
for maior que zero, então efetivamente a operação torna-se uma exclusão (alguns caracteres são excluídos, e nenhum é adicionado).
Notas de uso¶
Os
base_expr
einsert_expr
devem ser do mesmo tipo de dados; ou ambos devem ser cadeias de caracteres (por exemplo, VARCHAR) ou ambos devem ser binários.Se algum dos argumentos for NULL, o valor retornado é NULL.
Retornos¶
Retorna uma cadeia de caracteres ou BINARY que é equivalente a fazer uma cópia de base_expr
, excluindo caracteres começando com len
em pos
, e depois inserindo insert_expr
em pos
.
Observe que a entrada original base_expr
não é alterada; a função retorna uma cópia separada (modificada).
Exemplos¶
Este é um exemplo simples:
SELECT INSERT('abc', 1, 2, 'Z') as STR; +-----+ | STR | |-----| | Zc | +-----+
Este exemplo mostra que o comprimento da cadeia de caracteres de substituição pode ser diferente do comprimento da subcadeia de caracteres que está sendo substituído:
SELECT INSERT('abcdef', 3, 2, 'zzz') as STR; +---------+ | STR | |---------| | abzzzef | +---------+
Isto mostra o que acontece quando a cadeia de caracteres de substituição está vazia (a função apaga o número especificado de caracteres começando na posição inicial e não adiciona quaisquer caracteres):
SELECT INSERT('abc', 2, 1, '') as STR; +-----+ | STR | |-----| | ac | +-----+
Isso usa INSERT
como uma operação de apêndice, adicionando caracteres imediatamente após o último caractere na cadeia de caracteres original:
SELECT INSERT('abc', 4, 0, 'Z') as STR; +------+ | STR | |------| | abcZ | +------+
Os seguintes retornam todos NULL porque pelo menos um dos argumentos é NULL:
SELECT INSERT(NULL, 1, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', NULL, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, NULL, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, 2, NULL) as STR; +------+ | STR | |------| | NULL | +------+