SQLite 函数的工作原理与 Oracle 的 "Translate"函数类似吗?

标签 sql oracle sqlite

Oracle 有一个名为 translate 的函数,可用于将字符串中的各个字符按照出现的顺序替换为其他字符。它与 replace 函数不同,后者用整个第三个参数替换整个第二个参数。

translate('1tech23', '123', '456');     --would return '4tech56'
translate('222tech', '2ec', '3it');     --would return '333tith'

我需要它来实现对 SQLite 数据库的搜索,忽略查询字符串上的重音(巴西葡萄牙语)。将查询的表中的数据可以带或不带重音符号,因此,根据用户输入查询字符串的方式,结果会有所不同。

示例: 搜索“maçã”,用户可以键入“maca”、“maça”、“macã”或“maçã”,并且表中的数据也可以是四种可能性之一。 使用oracle,我只会使用这个:

Select Name, Id 
  From Fruits 
 Where Translate(Name, 'ãç','ac') = Translate(:QueryString, 'ãç','ac')

...以及这些其他字符替换:

áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙãõÃÕäëïöüÄËÏÖÜâêîôûÂÊÎÔÛñÑçÇ

作者:

aeiouAEIOUaeiouAEIOUaoAOaeiouAEIOUaeiouAEIOUnNcC

当然,我可以嵌套多次调用 Replace,但这不是一个好的选择。

提前感谢一些帮助。

最佳答案

堪萨斯州立大学为 SQLite 编写了开源 Oracle 函数。它们包括translate()(顺便说一句,完整的UTF-8支持)并且可以在here中找到。 .

关于SQLite 函数的工作原理与 Oracle 的 "Translate"函数类似吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958210/

相关文章:

sql - C 代码中 OCINumberFromText 中 'TEXT' 的格式

SQL查询,试图提高效率(Oracle DBMS)

sql - 累计差异

php - PDO/SQLite : Single query covering two related databases

android.database.sqlite.SQLiteException : near "Foreign": syntax error (code 1):

sql - 仅过滤 varchar 字段中的整数/数字值

.net - ADO.NET 超时但在 SSMS 中工作正常

sql - PostgreSQL 更新不起作用

sql - 根据具体情况选择

android - 我应该如何使用 Android 删除 SQLite 中的链接行?