带重音的Oracle查询

时间:2012-06-02 22:19:19

标签: oracle

这是我的问题,我在ISO-8859-1中找到了一个数据库 我有我的UTF-8网页,我想从我的查询中删除重音 我能找到没有重音符号的名字但是如果他们有名字我就找不到它们了 (在那里我有一个带口音的名字,我找不到名字)请帮助,我在这里死了... 我有这个:

$el=array();     //<----------------------------------------------------vowels to remove
$el[]=iconv('UTF-8','ISO-8859-1','á');
$el[]=iconv('UTF-8','ISO-8859-1','é');
$el[]=iconv('UTF-8','ISO-8859-1','í');
$el[]=iconv('UTF-8','ISO-8859-1','ó');
$el[]=iconv('UTF-8','ISO-8859-1','ú'); 

$string='Francisco Gutiérrez';      //<----------------------------------------target


$string=strtolower($string);     ///<----------------------------------string to iso 
$string=iconv('UTF-8','ISO-8859-1',
                    $string);


$tem3="SELECT  nom||' '||app||' '||apm as NAME 
       FROM STUDENTS 
       where 

      (
       upper(
            replace(
            replace(
            replace(
            replace(
            replace(
         lower(NAME),'".$el[0]."','a'),
                       '".$el[1]."','e'),
                       '".$el[2]."','i'),
                       '".$el[3]."','o'),
                       '".$el[4]."','u')
            ) 

       like '%'||
        upper(
            replace(
            replace(
            replace(
            replace(
            replace(
         '".$string."','".$el[0]."','a'),
                       '".$el[1]."','e'),
                       '".$el[2]."','i'),
                       '".$el[3]."','o'),
                       '".$el[4]."','u')
             )||'%'
     )";

1 个答案:

答案 0 :(得分:3)

您可以执行SQL CONVERT(string,destination_encoding,source_encoding),它为?提供不可转换的字符,您可以删除替换。

如果你这样做

$string = iconv('UTF-8','ASCII//TRANSLIT', $string);

SELECT CONVERT(nom, 'US7ASCII', 'WE8ISO8859P1') 
FROM STUDENTS LIKE ... $string ... ;

你可以使用ASCII,这应该很好。

ISO-8859-1可能也会这样做。