首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode SELECT:按MySQL查找所有语言

问Unicode SELECT:按MySQL查找所有语言
EN

Stack Overflow用户
提问于 2014-05-04 04:16:14
回答 2查看 74关注 0票数 0

我正在寻找一个相当棘手的(对我来说) SELECT语句,它将从语言定义数据库中计算字体文件的所有支持语言。

字体的unicodes存储在列表'unicodes‘中(我们在Python中)。language DB有两列,一列是语言名称,另一列是整数形式的unicode,如下所示:

代码语言:javascript
复制
(language) - (unicode)
English - 97 #a
English - 98 #b
English - 99 #c
German - 97 #a
German - 98 #b
German - 99 #c
German - 228 #ä

我当前的SQL语句如下:

代码语言:javascript
复制
"SELECT DISTINCT language FROM languagedefinitions WHERE unicode = %s;" % (' OR unicode = '.join(map(str, unicodes())))

问题是,这将输出字体部分支持的所有语言。具有unicodes 97-99的字体将同时输出英语和德语,而该字体中缺少德语(228)所需的unicode。

相反,我只需要字体完全支持的那些语言,例如,一种语言的所有unicode都存在于字体中。如果字体中缺少来自一种语言的一个或多个unicode(假设示例中为228 ),则不应显示德语。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-05-04 06:40:01

您可以使用子查询。使用子查询,我们选择字体中没有包含unicodes的语言​​:

代码语言:javascript
复制
SELECT DISTINCT language FROM languagedefinitions WHERE unicode NOT IN (97,98,99)

然后,我们选择子查询中未选择的所有语言​​。因此,完整查询将如下所示:

代码语言:javascript
复制
SELECT DISTINCT language FROM languagedefinitions WHERE language NOT IN (
    SELECT DISTINCT language FROM languagedefinitions WHERE unicode NOT IN (97,98,99);
);
票数 0
EN

Stack Overflow用户

发布于 2014-05-04 20:28:59

NorthCat的SQL-only子查询解决方案有效,但比Python中使用集合的迭代实现耗时(0.05s)多(0.0004s):

代码语言:javascript
复制
from sets import Set
# First step, get all languages
languagenames = web.db.dbexec("SELECT DISTINCT language FROM languagedefinitions;")
# Second step, get all unicodes from one language and compare them against the font using sets.Set()
supportedLanguages = []
for languagename in languagenames:
    unicodesPerLanguage = web.db.dbexec("SELECT unicode FROM languagedefinitions WHERE language = '%s';" % (languagename))
    if Set(x[0] for x in unicodesPerLanguage).issubset(Set(unicodesInFont)):
        supportedLanguages.append(languagename[0])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23449343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档