如何对SQLite查询进行排序而忽略文章("the","a"等)?

And*_*hie 11 c# sqlite stop-words

我正在使用C#来显示我从SQLite数据库调用的电影标题列表.目前,我正在使用一个自定义ListBox类,它具有从每个项目的开头剥离单词"The"的文本排序功能.但是,它似乎并不是最简单的方法,因为它从SQLite数据库调用然后排序.我希望将其缩减到一步,希望在我的"SELECT"查询中直接从数据库中进行排序.

我已经对此进行了一些搜索,并找到了一些建议,包括在数据库中创建一个额外的排序列.虽然这肯定是可能的,但我想知道是否有任何更简单的选项不需要插入几乎相同的重复信息(特别是如果数据库变大).我是SQLite的新手,但我已经阅读了一些关于创建可用于创建自定义排序的collat​​e函数的内容.但是,我不确定这是否适合使用它似乎无法找到任何帮助在C#中实现它.

希望有人能够分享一些指导.如果额外的排序列是最好的方法,那么这就是我要做的.

Tho*_*ler 6

为了避免插入大约具有两列什么重复的数据,:TITLE_PREFIX(通常为空,但有时含有"该",或"A";在此列上没有索引)和TITLE(包含标题没有'的’或"A";这是您创建索引的列).要显示数据,您必须组合TITLE_PREFIX和TITLE.但你只需搜索TITLE.


sat*_*ine 5

这是解决方案:

ORDER BY (CASE 
    WHEN sortTitle LIKE 'the %' THEN substr(sortTitle,5) 
    WHEN sortTitle LIKE 'a %' THEN substr(sortTitle,3) 
    WHEN sortTitle LIKE 'an %' THEN substr(sortTitle,4) 
    ELSE sortTitle END)
Run Code Online (Sandbox Code Playgroud)