Quando eu estava escrevendo uma página hoje, também fiquei muito deprimido. Havia registros na tabela, mas não consegui encontrá-los no ASP. Acabou sendo causado pelos diferentes caracteres curinga nas instruções de consulta de acesso e SQL. .
Comparação de caracteres curinga no ACCESS e caracteres curinga no SQL SERVER
================================================= =
Os caracteres curinga da biblioteca ACCESS são:
*corresponde a qualquer número de caracteres
?corresponde a qualquer caractere de uma única letra
Os caracteres curinga no SQL Server são:
% corresponde a qualquer número de caracteres
_ corresponde a um único caractere
texto
Quando eu estava escrevendo uma página hoje, também fiquei muito deprimido. Havia registros na tabela, mas não consegui encontrá-los no ASP. A instrução SQL teórica é a seguinte:
Selecione * FROM t_food Onde t_food.name como '*apple*'
Pesquisando no GOOGLE, descobri que a consulta difusa em ASP deveria ser escrita assim:
Selecione * FROM t_food Onde t_food.name como '%%apple%%'
Deve ser% e deve haver dois. Por favor, preste atenção.
+++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++
Problema de curinga na instrução de consulta SQL
Ao usar instruções SQL para consultar dados no Access, o caractere curinga * é usado para consulta. A declaração é a seguinte:
Selecione * do normal onde o nome do livro é como '*h*'
Tentei na visualização SQL do Access sem problemas, tudo funciona bem. Então, escrevi a instrução SQL no programa C#, mas assim que a instrução de consulta foi alcançada, ocorreu um erro. Procurei o arquivo de ajuda do Access e encontrei a seguinte ajuda:
/////////////////////////////////////////////// /// //////////
Compara uma expressão de cadeia de caracteres com um padrão em uma expressão SQL.
gramática
expressão como padrão
A sintaxe do operador Like consiste nas seguintes partes:
Descrição parcial
expressão A expressão SQL usada na cláusula Where.
O padrão literal de string é comparado à expressão.
ilustrar
Você pode usar o operador Like para encontrar valores de campo que correspondam a um padrão especificado. Para padrão, você pode especificar um valor completo (por exemplo, Like Smith) ou usar curingas para localizar um intervalo de valores (por exemplo, Like Sm*).
Em expressões, você pode usar o operador Like para comparar valores de campo com strings. Por exemplo, se você inserir Like C* em uma consulta SQL, a consulta retornará todos os valores de campo que começam com a letra C. Em uma consulta parametrizada, você pode solicitar que o usuário digite um padrão para procurar.
O exemplo a seguir retorna dados que começam com a letra P e são seguidos por qualquer letra de A a F e três números:
Como P[AF]###
A tabela a seguir mostra como testar diferentes padrões de expressões por meio do Like.
tipo de correspondência
correspondência de padrões
(Return True) Sem correspondência
(Retorno falso)
Vários caracteres a*a aa, aBa, aBBBa aBC
*ab* abc, AABB, Xab aZb, bac
Caractere especial a
aa*a aaa
Vários caracteres ab* abcdefg, abc cab, aab
Caractere único a?a aaa, a3a, aBa aBBBa
Números únicos a#a a0a, a1a, a2a aaa, a10a
Intervalo de caracteres [az] f, p, j 2 e
Fora do intervalo [!az] 9, &, % b, a
Valores não numéricos [!0-9] A, a, &, ~ 0, 1, 9
Valor composto a[!bm]# An9, az0, a99 abc, aj0
Endereço de referência: http://office.microsoft.com/zh-cn/assistance/HP010322532052.aspx
/////////////////////////////////////////////// /// /////////
A ajuda diz isso e não há problemas. Qual é o problema? Isso me confunde ainda mais. Mais tarde, perguntei a um colega e disse: Sua instrução SQL está errada. O caractere curinga deveria ser % em vez de *. Mas a ajuda diz *, e tudo funciona bem quando eu testo no Access. Meus colegas não conseguem explicar o porquê, então continuam procurando respostas para solicitações de ajuda. As seguintes informações foram encontradas em outro arquivo de ajuda:
/////////////////////////////////////////////// /// /////////
Os métodos integrados de correspondência de padrões fornecem uma ferramenta geral para comparação de strings. A tabela a seguir mostra os caracteres curinga que podem ser usados com o operador Like e os números e strings aos quais eles correspondem.
Caracteres no padrão Correspondências na expressão
? ou _ (sublinhado) qualquer caractere único
* ou % zero ou mais caracteres
# Qualquer número único (0-9)
[charlist] Qualquer caractere único em charlist.
[!charlist] Qualquer caractere único que não esteja na charlist.
Você pode usar um conjunto de um ou mais caracteres (charlist) entre colchetes ([]) para corresponder a qualquer caractere único na expressão, e charlist pode conter a maioria dos caracteres do conjunto de caracteres ANSI, incluindo números. Caracteres específicos, como colchete esquerdo ([), ponto de interrogação (?), sinal de dígito (#) e asterisco (*) podem ser comparados diretamente aos próprios símbolos, colocando-os entre colchetes. O colchete de fechamento não pode ser usado dentro de um grupo para corresponder a si mesmo, mas pode ser usado como um único caractere fora do grupo.
Além de uma lista de caracteres simples entre colchetes, uma charlist pode ter limites de intervalo superior e inferior separados por um hífen (-). Por exemplo, ao usar [AZ] no padrão, uma correspondência será obtida se o caractere correspondente na expressão contiver qualquer caractere maiúsculo no intervalo de A a Z. Você pode colocar vários intervalos entre colchetes sem delimitar os intervalos. Por exemplo, [a-zA-Z0-9] corresponde a qualquer caractere alfanumérico.
Observe que os caracteres curinga ANSI SQL (%) e (_) são válidos somente na versão Microsoft® Jet 4.X e no Microsoft OLE DB Provider for Jet. Se usados no Microsoft Access ou DAO, eles serão tratados como texto.
Outras regras importantes para correspondência de padrões são as seguintes:
Usar um ponto de exclamação (!) no início de uma charlist indicará que uma correspondência ocorrerá se qualquer caractere fora da charlist aparecer na expressão. Quando usado fora dos colchetes, o ponto de exclamação corresponde a si mesmo.
Um hífen (-) pode ser usado no início (após o ponto de exclamação) ou no final de uma lista de caracteres para corresponder a si mesmo. Em qualquer outra posição, o hífen identifica um intervalo de caracteres ANSI.
Quando um intervalo de caracteres é especificado, os caracteres devem aparecer em ordem crescente (AZ ou 0-100). [AZ] é um modo válido, [ZA] é um modo inválido.
A ordem dos caracteres [ ] é ignorada; é tratada como um caractere de comprimento zero ( ).
Endereço de referência: http://office.microsoft.com/zh-cn/assistance/HP010322842052.aspx
/////////////////////////////////////////////// /// //////////////
Neste ponto, o motivo finalmente foi encontrado. Como eu uso o curinga * no Access, tudo funciona bem, mas se eu mudar para%, não terá sucesso. Em C#, apenas o curinga % é suportado e substituí-lo por * causará um erro! Este problema é considerado um problema de compatibilidade?
Curinga:
Exemplo de descrição curinga
% Qualquer string contendo zero ou mais caracteres. WHERE title LIKE '%computer%' encontrará todos os títulos de livros contendo a palavra computador em qualquer lugar do título.
_ (sublinhado) Qualquer caractere único. WHERE au_fname LIKE '_ean' encontrará todos os nomes de 4 letras que terminam em ean (Dean, Sean, etc.).
[ ] Especifica qualquer caractere único em um intervalo ([af]) ou conjunto ([abcdef]). Onde au_lname LIKE '[CP]arsen' encontrará sobrenomes de autores terminando com arsen e começando com qualquer caractere único entre C e P, por exemplo, Carsen, Larsen, Karsen, etc.
[^] Qualquer caractere único que não pertence ao intervalo especificado ([af]) ou conjunto ([abcdef]). Onde au_lname LIKE 'de[^l]%' encontrará todos os sobrenomes de autores que começam com de e não são seguidos por l.
Use curingas como literais
Você pode usar strings de correspondência de padrão curinga como strings literais, colocando os caracteres curinga entre parênteses. A tabela a seguir mostra um exemplo de uso da palavra-chave LIKE e do caractere curinga [ ].
Significado do símbolo
GOSTO '5[%]' 5%
COMO '[_]n' _n
COMO '[a-cdf]' a, b, c, d ou f
COMO '[-acdf]' -, a, c, d ou f
COMO '[ [ ]' [
COMO ']' ]
COMO 'abc[_]d%' abc_d e abc_de
COMO 'abc[def]' abcd, abce e abcf
Correspondência de padrões usando a cláusula ESCAPE
Procura strings que contenham um ou mais caracteres curinga especiais. Por exemplo, a tabela de descontos no banco de dados de clientes pode armazenar valores de desconto com um sinal de porcentagem (%). Para procurar o sinal de porcentagem como um caractere em vez de um caractere curinga, você deve fornecer a palavra-chave ESCAPE e um caractere de escape. Por exemplo, um banco de dados de amostra contém uma coluna chamada comentário que contém 30% de texto. Para procurar qualquer linha que contenha 30% da sequência em qualquer lugar da coluna de comentários, especifique uma cláusula Where que consiste no comentário WHERE LIKE '%30!%%' ESCAPE '!'. Se você não especificar ESCAPE e o caractere de escape, o SQL Server retornará todas as linhas que contêm a string 30.
O exemplo a seguir mostra como pesquisar a string 50% de desconto quando 100 ou mais cópias forem compradas na coluna de notas da tabela de títulos no banco de dados de pubs:
Selecione notas DOS títulos Onde notas LIKE '50%% de desconto quando 100 ou mais cópias forem compradas' ESCAPE '%'