2010-03-02 114 views
1

我正在使用Postgresql数据库。在我的数据库中有一个表mumbaipropertydetails,其中一个列区域具有unicode数据。unicode字符串搜索

当我执行查询:

select mumbaipropertydetails."zone" 
from mumbaipropertydetails; 

它给出这样的输出:

"\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947" 
"\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947" 
"\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947" 
"\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947" 
"\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947" 
"\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947" 

当我试图执行像另一个查询:

select mumbaipropertydetails.taxno 
from mumbaipropertydetails 
where mumbaipropertydetails."zone"= "\u092A\u093F\u0902\u092A\u0930\u0940 
\u0935\u093E\u0918\u0947\u0930\u0947"; 

它给像这样的错误

NOTICE: identifier 
"\u092A\u093F\u0902\u092A\u0930\u0940\u0935\u093E\u0918\u0947\u0930\u0947" 
will be truncated to 
"\u092A\u093F\u0902\u092A\u0930\u0940\u0935\u093E\u0918\u0947\u" 

ERROR: column "\u092A\u093F\u0902\u092A\u0930\u0940 
\u0935\u093E\u0918\u0947\u" does not exist 
LINE 1: ...opertydetails where mumbaipropertydetails."zone"= "\u092A\u0... 
                 ^
********** Error ********** 

ERROR: column "\u092A\u093F\u0902\u092A\u0930\u0940 
\u0935\u093E\u0918\u0947\u" does not exist 
SQL state: 42703 
Character: 99 

回答

3

我认为你在查询时混淆了单引号和双引号。

你应该这样的查询:

select mumbaipropertydetails.taxno 
    from mumbaipropertydetails 
    where 
    mumbaipropertydetails.zone 
    = 
    E'\u092A\u093F\u0902\u092A\u0930\u0940 \u0935\u093E\u0918\u0947\u0930\u0947'; 
  1. 没有必要为引用的列名,如果他们是小写。如果他们是混合或大写你必须引用它们用双引号 - "
  2. 字符串有单引号被引用 - 使用反斜杠(\'
  3. 字符串转义,必须使用一个字母E在开启单引号之前,就像上面的例子。