Preciso diferenciar letras maiúsculas de minúsculas , com MYSQL nós usamos BINARY na query e no MSSQL o que usar? tentei BINARY e me retornou erro :(
Versão Imprimível
Preciso diferenciar letras maiúsculas de minúsculas , com MYSQL nós usamos BINARY na query e no MSSQL o que usar? tentei BINARY e me retornou erro :(
Basta usar collation, mas tome cuidado e siga o padrão da collation da sua DB.
CaseSensitivity
CI especifica que não diferencia maiúsculas de minúsculas, CS especifica que diferencia maiúsculas de minúsculas.
AccentSensitivity
AI especifica que não diferencia acentos, AS especifica que diferencia acento.
Exemplo:
SELECT * FROM MEMB_INFO COLLATE Latin1_General_CS_AS
A query do exemplo vai diferenciar maiúsculas de minúsculas e vai diferenciar acentos.
Sendo assim, "olá" vai ser diferente de "ola".
E "Ola" vai ser diferente de "ola", etc.
Se quiser saber mais sobre Collations, consulte a [Only registered and activated users can see links. Click Here To Register...]
Recomendo que siga a collation recomendada para a versão do seu SQL.
SQL Server 2005 (90) ou SQL Server 2000: Latin1_General_XX_XX
SQL Server 2008 (100): Latin1_General_100_XX_XX
Se for pra MuOnline, ao que me consta (pelo menos é assim que uso e sempre foi tudo ok), o ideal é Latin1_General_CI_AI como default pra DB para evitar problemas (principalmente em login) e Latin1_General_CI_AS para colunas de tabelas que armazenam conteúdos que recebem acentos, como notícias e ticket.
Obrigado Renato, vi a documentação, tentei usar como você falou e não adiantou ele está fazendo login ainda com letras minusculas, vou ver mas sobre collations aqui. Obrigado, já é um bom começo!
texto é varchar/char, binary e varbinary é outra coisa... vc n vai conseguir comparar com texto sem fazer um cast antes
CONVERT(VARCHAR(MAX), coluna)
Isso vai converter? não posso fazer isso é pra site de MuOnline, se eu fazer isso vai terminar de feder o cocô que utilizam a mesma query UEHUEHUEH tendeu?!!!Citação:
Postado originalmente por WoLfulus [Only registered and activated users can see links. Click Here To Register...]
Olhe minha query não funfa estou pensando em deixar como está sem diferenciar maiúsculas de minúsculas:
Código:$incchecklogin = $inccn->INCrow($inccn->INCconsulta("select memb___id COLLATE Latin1_General_CI_AS from memb_info where memb___id='".$inclogin_panel."' and memb__pwd='".$incpassw_panel."'"));
mano, se o site é pra muonline, desde quando o memb___id e memb__pwd é binary pra começo de conversa? ambos deveriam estar varchar(10), a não ser que a senha seja MD5, ai nem esse tipo de comparação vc deveria estar fazendo, pq vc tem que calcular um hash de ambos pra comprar a senha (o que é feito por procedure)
e outra, esse tipo de "montagem" de query por concatenação é propícia à sql injection.
[]'s
Wolf, acho que tu não compreendeu a dúvida do rapaz...
Pelo que entendi ele quer saber como diferenciar case sensitive, não como converter pra varbinary.
O problema é que ele não soube se expressar corretamente, principalmente no título do tópico :)
@gokuka, observe bem a sua query e você verá qual foi o seu erro.
[]'s
WoLfulus, Rapaz vou mudar, primeiro eu faço depois eu testo e mudo pra algo melhor :)
Renato, sim eu não sabia como expressar :( ainda bem que tem um que entende...
No MySQL se utiliza assim:
select prod_name, prod_id from products where prod_name = binary 'Hype Beau';
[Only registered and activated users can see links. Click Here To Register...]
Eu mesmo testei fiz um painelzinho simples em mysql, e funcionou agora pra mssql server nem esse treco que o renato passou funcionou (agora vou pra escola mas tarde eu tento navamente)...
Valeu Renato...
agora ISSO SIM faz sentido... eu achei que vc tava tentando usar CS/AC em colunas bináriasCitação:
Postado originalmente por gokuka [Only registered and activated users can see links. Click Here To Register...]
#off
Gostei do Bard no teu avatar @wolfulus ^^