Como usar semelhante e NULL predicados em instruções SQL

SQL: 1999, acrescentou o SEMELHANTE predicado, que oferece uma forma mais poderosa de encontrar correspondências parciais do que o GOSTAR predicado fornece. Com o SEMELHANTE predicado, você pode comparar uma cadeia de caracteres a uma expressão regular. Por exemplo, digamos que você está pesquisando na Sistema operacional coluna de uma tabela de compatibilidade de software para procurar a compatibilidade Microsoft Windows. Você poderia construir uma ONDE cláusula, como a seguir:

ONDE OperatingSystem semelhante a "( 'Windows' (3,1 | 95 | 98 | ME | CE | NT | 2000 | XP | Vista | 7 | 8)) '

Esse predicado recupera todas as linhas que contêm qualquer um dos sistemas operacionais da Microsoft especificados.

o NULO predicado encontra todas as linhas onde o valor na coluna selecionada é nulo. Por exemplo, em uma tabela ALIMENTOS comparando o valor nutricional de diferentes alimentos, várias linhas têm valores nulos na hidrato de carbono coluna. Você pode recuperar os seus nomes usando uma instrução como a seguinte:

SELECIONAR (Food) FROM FOODSWHERE carboidratos é NULL -

Esta consulta retorna os seguintes valores:

Carne de Vaca, magra hamburgerChicken, meatOpossum luz, roastedPork, presunto

Como você poderia esperar, incluindo o NÃO chave inverte o resultado, tal como no exemplo que se segue:

SELECIONAR (Food) FROM FOODSWHERE Carboidratos IS NOT NULL -

Esta consulta retorna todas as linhas da tabela, exceto o de quatro que a precederam consulta retorna.

A declaração O carboidrato é NULL é não o mesmo que Carboidratos = NULL. Para ilustrar este ponto, suponha que, na linha atual da tabela de FOODS, tanto hidrato de carbono e Proteína são nulos. A partir deste fato, você pode tirar as seguintes conclusões:

  • O carboidrato é NULL é verdade.

  • A proteína é NULL é verdade.

  • Carboidrato é nulo e proteína é NULL é verdade.

  • Carboidratos = Proteína é desconhecido.

  • Carboidratos = NULL é uma expressão ilegal.

Utilizando a chave NULO em uma comparação não tem sentido porque a resposta sempre retorna como desconhecido.

Por que é Carboidratos = Proteína definido como desconhecido, embora hidrato de carbono e Proteína tem o mesmo valor (nulo)? Porque NULO significa simplesmente # 147-I não sei. # 148- Você não sabe o que hidrato de carbono é, e você não sabe o que Proteína é-, portanto, você não sabe se esses valores (desconhecidos) são os mesmos.

Talvez hidrato de carbono é 37, e Proteína é 14, ou talvez hidrato de carbono é de 93, e Proteína é 93. Se você não sabe tanto o valor de carboidratos e o valor de proteína, você não pode dizer se os dois são a mesma coisa.

menu