Pessoal é o seguinte, quero fazer um select dessa forma:
select * from base
where cidade not in (select chaCidade from tabCidade)
Só que eu quero ignorar acentos e as letras maísculas e mínusculas.
Alguem pode me ajudar?
Pessoal é o seguinte, quero fazer um select dessa forma:
select * from base
where cidade not in (select chaCidade from tabCidade)
Só que eu quero ignorar acentos e as letras maísculas e mínusculas.
Alguem pode me ajudar?
Aqui na Empresa cara, agente usa uma funçãozinha pra isso, não sei que banco vc usa mas ta ai a de oracle.
create or replace
FUNCTION "SEM_ACENTO" (TEXTO IN CLOB)
RETURN CLOB
IS
RETORNO CLOB;
BEGIN
SELECT UPPER(TRANSLATE( SUBSTR(TEXTO,1,4000) ,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC')) INTO RETORNO FROM DUAL;
RETURN RETORNO;
END sem_acento;
Ai ficaria tipo assim eu esqueci a chamada de função no oracle tá kkkkk…
select * from base
where semacento(cidade) not in (select semacento(chaCidade) from tabCidade);
Falow.
[quote=colored]Aqui na Empresa cara, agente usa uma funçãozinha pra isso, não sei que banco vc usa mas ta ai a de oracle.
create or replace
FUNCTION "SEM_ACENTO" (TEXTO IN CLOB)
RETURN CLOB
IS
RETORNO CLOB;
BEGIN
SELECT UPPER(TRANSLATE( SUBSTR(TEXTO,1,4000) ,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ','aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC')) INTO RETORNO FROM DUAL;
RETURN RETORNO;
END sem_acento;
Amigo, utilizei uma função que achei do sql server, porém a consulta fica muito lenta, pois são cerca de 5600 linhas.
como posso melhor esse processo?
USE [extranet_antigoatual]
GO
/****** Object: UserDefinedFunction [dbo].[remove_acento] Script Date: 01/27/2012 14:58:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[remove_acento](@Texto varchar(8000))
returns varchar(50)
AS
BEGIN
declare @SemAcento varchar(50)
select @SemAcento = replace(@Texto,'á','a')
select @SemAcento = replace(@SemAcento,'à','a')
select @SemAcento = replace(@SemAcento,'ã','a')
select @SemAcento = replace(@SemAcento,'â','a')
select @SemAcento = replace(@SemAcento,'é','e')
select @SemAcento = replace(@SemAcento,'è','e')
select @SemAcento = replace(@SemAcento,'ê','e')
select @SemAcento = replace(@SemAcento,'í','i')
select @SemAcento = replace(@SemAcento,'ì','i')
select @SemAcento = replace(@SemAcento,'î','i')
select @SemAcento = replace(@SemAcento,'ó','o')
select @SemAcento = replace(@SemAcento,'ò','o')
select @SemAcento = replace(@SemAcento,'ô','o')
select @SemAcento = replace(@SemAcento,'õ','o')
select @SemAcento = replace(@SemAcento,'ú','u')
select @SemAcento = replace(@SemAcento,'ù','u')
select @SemAcento = replace(@SemAcento,'û','u')
select @SemAcento = replace(@SemAcento,'ü','u')
select @SemAcento = replace(@SemAcento,'ç','c')
return (UPPER(@SemAcento))
END
Ai ficaria tipo assim eu esqueci a chamada de função no oracle tá kkkkk…
select * from base
where semacento(cidade) not in (select semacento(chaCidade) from tabCidade);
Falow.[/quote]
O Sql Server tem o recurso de collations.
Com ela você pode dizer que campos de texto são case-insensitive e accent-insensitive.
Ou seja, ele já ignora essas diferenças entre acento e “caixa” automaticamente.
[quote=AbelBueno]O Sql Server tem o recurso de collations.
Com ela você pode dizer que campos de texto são case-insensitive e accent-insensitive.
Ou seja, ele já ignora essas diferenças entre acento e “caixa” automaticamente.[/quote]
é possível aplicar aos duas collations ao mesmo tempo?
att