Imagine uma tabela chamada de CLIENTES, com a seguinte estrutura:
CREATE TABLE CLIENTES
(
CLIENTES_ID INTEGER NOT NULL,
CLIENTES_NOME VARCHAR(50) CHARACTER SET WIN1252 NOT NULL
);
(
CLIENTES_ID INTEGER NOT NULL,
CLIENTES_NOME VARCHAR(50) CHARACTER SET WIN1252 NOT NULL
);
ALTER TABLE CLIENTES ADD CONSTRAINT PK_CLIENTES_CHAVE PRIMARY KEY (CLIENTES_ID);
Agora imagine que você queira buscar todos os clientes que começam pela letra A, você realizaria a seguinte consulta:
SELECT
*
FROM
CLIENTES
WHERE CLIENTES_NOME LIKE 'A%';
Ou seja, para simular o começando por A e qualquer outro caracter, seria utilizado LIKE 'A%'.
Agora vejamos o mesmo comando, com a utilização do comando STARTING WITH(começando com):
SELECT
*
FROM
CLIENTES
WHERE CLIENTES_NOME STARTING WITH 'A';
Note que não precisamos mais do %.
o starting with sempre usa índice (se o mesmo existir) pois ele faz a procura pelo início da string.
Agora imagine que você queira buscar todos os clientes que contenham a letra A, você realizaria a seguinte consulta:
SELECT
*
FROM
CLIENTES
WHERE CLIENTES_NOME LIKE '%a%';
Ou seja, para simular o contendo a e qualquer outro caracter, seria utilizado LIKE '%a%'.
Agora vejamos o mesmo comando, com a utilização do comando CONTAINING(contendo):
SELECT
*
FROM
CLIENTES
WHERE CLIENTES_NOME CONTAINING 'a';
*
FROM
CLIENTES
WHERE CLIENTES_NOME CONTAINING 'a';
Mais uma vez eliminamos o uso do %.
Diferentemente do starting with, o contaning não usa índice (mesmo se ele existir), pois, ele pode procurar em qualquer parte da string.
Quanto ao like, ele se comporta como um dos dois anteriories... se for uma string 'A%' usa índice, mas se for
'%a%' não usa.
Até a próxima.