Strings
Uma string é uma sequência de caracteres, cercada por caracteres de aspas simples (''
') ou duplas (''
') (Se você utiliza o modo ANSI deve utilizar somente as aspas simples). Exemplos:
'uma string' 'outra string'
Em uma string, certas sequências tem um significado especial. Cada uma destas sequências começam com uma barra invertida ('\
'), conhecida como caracter de escape. O MariaDB reconhece a seguinte sequência de escape:
\0
Um caracter ASCII 0 (
NUL
).\'
Um caracter de aspas simples ('
'
').\'
Um caracter de aspas duplas ('
'
').\b
Um caracter de backspace.
\n
Um caracter de nova linha.
\r
Um caracter de retorno de carro.
\t
Um caracter de tabulação.
\z
ASCII(26) (Control-Z). Este caracter pode ser codificado para permitir que você contorne o problema que o ASCII(26) possui comoEND-OF-FILE ou EOF (Fim do arquivo) no Windows. (ASCII(26) irá causar problemas se você tentar usar
mysql banco_dados < nome_arquivo
).\\
O caracter de barra invertida ('
\
') character.\%
Um caracter '
%
'. Ele pode ser usado para pesquisar por instâncias literais de '%
' em contextos onde '%
' deve, de outra maneira, ser interpretado como um meta caracter. Leia "Funções de Comparação de Strings".\_
Um caracter '
_
'. Ele é usado para pesquisar por instâncias literais de '_
' em contextos onde '_
' deve, de outra maneira, ser intrerpretado como um meta caracter. See "Funções de Comparação de Strings".
Note que se você utilizar '\%
' ou '\_
' em alguns contextos de strings, eles retornarão as strings '\%
' e '\_
' e não '%
' e '_
'.
Estas são as várias maneiras de incluir aspas com uma string:
- Um '
'
' dentro de uma string com ''
' pode ser escrita como '''
'. - Um '
'
' dentro de uma string com ''
' pode ser escrita como '''
'. - Você pode preceder o caracter de aspas com um caracter de escape ('
\
'). - Um '
'
' dentro de uma string com ''
' não precisa de tratamento especial e não precisa ser duplicada ou utilizada com caracter de escape. Da mesma maneira, ''
' dentro de uma string com ''
' não necessita de tratamento especial.
As instruções SELECT
exibidas abaixo demonstram como citações e escapes funcionam:
mysql>SELECT 'hello', ''hello'', '''hello''', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql>SELECT 'hello', ''hello'', '''hello''', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql>SELECT 'This\nIs\nFour\nlines';
+--------------------+ | This Is Four lines | +--------------------+
Se você deseja inserir dados binários em uma coluna BLOB
, os caracteres a seguir devem ser representados por sequências de espace:
NUL
ASCII 0. Você deve representá-lo como '
\0
' (uma barra invertida e um caractere '0
').\
ASCII 92, barra invertida. Representado como '
\\
'.'
ASCII 39, aspas simples. Representado como '
\'
'.'
ASCII 34, aspas duplas. Representado como '
\'
'.
Se você escreve código C, você pode utilizar a função da API C mysql_escape_string()
para caracteres de escape para a instrução INSERT
. Leia "Visão Geral das Função da API C". No Perl, pode ser utilizado o método quote
do pacote DBI
para converter caracteres especiais para as sequências de escape corretas. Leia "A interface DBI
".
Deve ser utilizada uma função de escape em qualquer string que contêm qualquer um dos caracteres especiais listados acima!
Alternativamente, muitas APIs do MariaDB fornecem algumas da capacidades de placeholder que permitem que você insira marcadores especiais em um string de consulta e então ligar os valores dos dados a eles quando você executa a consulta. Neste caso, a API inclui, automaticamente, os caracteres especiais de escape nos valores para você.