在我们的数据库中,我们有多个带有 caron/hatschek 的条目。现在我们的用户希望在搜索没有的条目时找到包含 caron/hatschek 的条目。我将通过一个简单的例子来说明这一点:
在我们的数据库中,我们有条目(联系人姓名)
Millière
Run Code Online (Sandbox Code Playgroud)
所以这个名字在这个人居住的国家是正确的。
在我们国家,我们没有任何带有 caron/hatschek 的字符,因此我们的用户搜索Milliere. 没有结果出现,因为è显然不匹配e。
我不知道这是如何实现的,因为é, è,ê还有更多可用的(这只是字母的一个例子e......)。
(另一种方法会容易得多,因为我可以简单地将所有带有 caron/hatschek 的字母替换为基本字母。显然,我们的用户确实想要数据库中名称的正确版本,而不是残缺的名称。)
此问题在纯 sql 中搜索答案(无 db-server 特定代码)
-edit- 应有的评论/答案:“纯 sql”- SQL92/99 因为这适用于所有服务器。我不仅在 mysql 上使用此代码,这只是我尝试的第一个代码。我必须支持 Microsoft SQL Server (2000!)、h2、PostGRE SQL 和 MySQL Server,但代码也应该适用于其他人(独立于数据库服务器)。如果“纯sql”不够详细,我很抱歉。下次我会指定 SQL 修订的要求 (3/4, 92/99)
我必须向后兼容。这就是我没有指定数据库服务器的原因。这是故意的。-编辑结束-
我尝试从具有给定限制的表中获取所有值。我用于查询的数据是:可能的语言环境和一个 max_priority
这是要使用的表
SELECT * FROM i18n
Run Code Online (Sandbox Code Playgroud)
.
id|featureName|locale |priority|text
--+-----------+-----------+--------+----
1| type | en| 1|father
2| type | de| 2|Vater
3| type | de_AT| 3|Papa
4| type | de_AT_Wien| 4|Oida
5| firstName | en| 1|first name
6| firstName | de| 2|Vorname
7| lastName | en| 1|last name
8| lastName | de| 2|Nachname
9| lastName …Run Code Online (Sandbox Code Playgroud) 我正在items从数据库中查询并将其显示给用户。(在我的示例中,我将contacts在 table 中使用tContacts。
用户items按他决定的顺序选择几个(用户可以随机选择项目,因此不能指定要订购的列)。
在应用程序中,我items在ordered list.
目前我查询这些对象的更多详细信息one-by-one。
是否可以创建一个带有“有序列表”的查询,它items以相同的顺序返回?
类似于(是的,这很丑 - 可能也达到了最大 sql 查询大小):
SELECT * FROM (
--how to append this list...
SELECT 0 as listIndex, * from tContacts where conIdContact = 13259;
SELECT 1 as listIndex, * from tContacts where conIdContact = 12472;
[...]
SELECT 568 as listIndex, * from tContacts where conIdContact = 12422;
)
ORDER BY listIndex
Run Code Online (Sandbox Code Playgroud)
one-by-one …