SELECT CONVERT('Peña Báináõ','US7ASCII') as converted FROM dual;
但问题在于并非所有角色都具有英语等效(甚至不是一些非常明显的角色,如ñ或õ)所以我们最终将文本转换为:
Pe?a Baina?
因此,如果用户试图找到输入“Pena Bainao”的地址,他找不到它,因为“Pena Bainao”不同于“Pe?a Baina?”“.
我们已经找到了一些肮脏的工作场所,但我想首先检查是否有人找到了更优雅的解决方案.
以下是一些未转换为US7ASCII的字符列表:
Character UTF8 Code Possible Equivalent æ - u00E6 - aeå - u00E5 - aã - u00E3 - añ - u00F1 - nõ - u00F5 - o解决方法@H_419_31@ 1)使用nlssort和BINARY_AI(案例和重音insentive):
sql> select nlssort('Peña Báináõ','NLS_SORT = BINARY_AI') C from dual;C------------------------70656E61206261696E616F00sql> select nlssort('Pena Bainao','NLS_SORT = BINARY_AI') C from dual;C------------------------70656E61206261696E616F00sql> select nlssort('pena bainao','NLS_SORT = BINARY_AI') C from dual;C------------------------70656E61206261696E616F00sql> select 'true' T from dual where nlssort('pena bainao','NLS_SORT = BINARY_AI') = nlssort('Peña Báináõ','NLS_SORT = BINARY_AI') ;T----true
2)您还可以将NLS_SORT会话变量更改为binary_ai,然后您不必每次都指定NLS_SORT:
sql> select 'true' T from dual where nlssort('pena bainao') = nlssort('Peña Báináõ') ;no rows selectedsql> alter session set nls_sort = binary_ai;Session altered.sql> select 'true' T from dual where nlssort('pena bainao') = nlssort('Peña Báináõ') ;T----true
3)要放弃使用nlssort函数并更改所有内容的语义,还要设置nls_comp会话变量:
sql> select 'true' T from dual where 'pena bainao' = 'Peña Báináõ';no rows selectedsql> alter session set nls_comp = linguistic;Session altered.sql> select 'true' T from dual where 'pena bainao' = 'Peña Báináõ';T----true
选项1仅更改本地行为,即您想要不同结果的查询.选项2和3将改变其他查询的行为,可能不是您想要的.请参见Table 5-2的Table 5-2.另请参阅“Using Linguistic Indexes”部分以了解如何使用索引.
总结以上是内存溢出为你收集整理的Oracle搜索带有非英文字符的文本全部内容,希望文章能够帮你解决Oracle搜索带有非英文字符的文本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)