unicode字符串搜索

时间:2010-03-02 08:38:57

标签: postgresql search unicode

我正在使用Postgresql数据库。在我的数据库中,有一个表mumbaipropertydetails,其中一个列区域具有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

1 个答案:

答案 0 :(得分: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,如上例所示。