很容易查询以英文开头的所有单词,例如查询以“a”开头的所有单词,我们执行此查询:
SELECT * FROM table WHERE word LIKE 'a%';
我们可以获得“an”,“at”,“after”....
之类的结果但在韩语中却不一样,因为韩语单词被认为是单个Unicode字符, 所以这个查询:
SELECT * FROM table WHERE word LIKE 'ㄱ%';
不会返回“가”,“고”,“간”等字样...(结果可能会像“ㄱ자”,“ㄱ견”......)
那么我应该怎样做才能得到我期望的结果呢? (即我会得到像“가”,“고”,“간”这样的词......当我想用“ㄱ”查询单词start时)
非常感谢!
答案 0 :(得分:0)
这里的问题是unicode格式和韩国人将辅音和元音组合起来创造新角色的独特行为。您可以将这些新字符存储为单个字形或组合字形。如果要像这样搜索,则需要将它们存储为单个字形。这意味着获取将存储在数据库中的每个传入字符串并在插入它们之前处理它们,将复合字形分解为其组件。如果您有一个现有的数据库,那么您也必须对现有数据执行此操作。
另一条路线是列出每个可能的字形组合,其中包含带有unicode复杂表达式的字符,并使用大量的OR搜索所有字符。
无论哪种方式都是颈部疼痛。对于程序员来说,亚洲语言可能是一个真正的问题,他们似乎都有很少的东西会使他们难以处理。