2

我知道这个问题是在这个网站上提出的,但所有的答案都没有解决问题。所以我在这里再次问我的问题。

我创建了一个 sqlite db(通过 Firefox Sqlite 管理器工具),数据以越南语存储。

CREATE TABLE "customer" ("cus_id" TEXT, "cus_name" TEXT, "cus_address" TEXT, "cus_phone" TEXT);

INSERT INTO "customer" VALUES('KH1','Trần Văn A','Hai Bà Trưng, quận 1','0908112233');
INSERT INTO "customer" VALUES('KH2','Lê Hoài B','Hai Bà Trưng, quận 1','0908112233');
INSERT INTO "customer" VALUES('KH3','Nguyễn Thành C','Hai Bà Trưng, quận 1','0908112233');

我的应用程序是 iOS 应用程序。用户搜索文本“Tran”我尝试了查询:

SELECT * FROM customer WHERE cus_name LIKE '%Tran%';

我尝试了另一种解决方案:

SELECT * FROM customer WHERE cus_name COLLATE UTF8CI LIKE '%Tran%';

但我得到了 0 条记录。然后我尝试了更多在互联网上找到的解决方案,但我也得到了 0 条记录。

请帮忙。谢谢你。

4

1 回答 1

3

您应该在数据库表中为非 unicode 越南语值再创建一个字段。您将在此字段中进行搜索。

要删除越南语字符串中的符号:

#define specialCharacter @[@"áàạảãâấầậẩẫăắằặẳẵ",@"ÁÀẠẢÃÂẤẦẬẨẪĂẮẰẶẲẴ",@"éèẹẻẽêếềệểễ",@"ÉÈẸẺẼÊẾỀỆỂỄ",@"óòọỏõôốồộổỗơớờợởỡ",@"ÓÒỌỎÕÔỐỒỘỔỖƠỚỜỢỞỠ",@"úùụủũưứừựửữ",@"ÚÙỤỦŨƯỨỪỰỬỮ",@"íìịỉĩ",@"ÍÌỊỈĨ",@"đ",@"Đ",@"ýỳỵỷỹ",@"ÝỲỴỶỸ"];
#define replaceCharacter @"aAeEoOuUiIdDyY";

    +(NSString *)removeSign4VietnameseString : (NSString*)str
    {
        NSString *tempStr = str;
        //
        NSArray * _vietNameCharacter = specialCharacter;
        NSString * _replaceCharacter = replaceCharacter;
        for (int i = 0; i<_vietNameCharacter.count; i++) {
            NSString* cRe = [NSString stringWithFormat:@"%C",[_replaceCharacter characterAtIndex:i]];
            for (int j = 0; j<[[_vietNameCharacter objectAtIndex:i] length]; j++) {
                NSString* cOri = [NSString stringWithFormat:@"%C",[[_vietNameCharacter objectAtIndex:i] characterAtIndex:j]];
                tempStr = [tempStr stringByReplacingOccurrencesOfString:cOri withString:cRe];
            }
        }
        return [tempStr lowercaseString];
    }
于 2015-10-29T07:03:30.907 回答