You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle中按越南语字母表对数据列进行排序

按越南语字母表排序Oracle查询结果的解决方案

针对你提出的问题,Oracle默认的二进制排序确实无法正确处理越南语的特殊字符(比如Ă、Â、Đ这些),要实现符合越南语字母表顺序的排序,我们可以利用Oracle的NLSSORT函数来指定语言特定的排序规则。

具体修改方案

直接在ORDER BY子句中使用NLSSORT函数,并传入越南语排序参数NLS_SORT=VIETNAMESE,这样就能让数据库按照越南语的字母顺序对NAMES列进行排序。

修改后的完整SQL语句如下:

WITH TB AS( 
    SELECT 1 ID, N'Bấm kim' NAMES FROM DUAL 
    UNION ALL 
    SELECT 2 ID, N'Quét keo, dán mylar da đệm mắt cáo' NAMES FROM DUAL 
    UNION ALL 
    SELECT 3 ID, N'Đục lỗ, gắn, đóng nút da trên nắp' NAMES FROM DUAL 
    UNION ALL 
    SELECT 4 ID, N'Ăn kem' NAMES FROM DUAL 
) 
SELECT * FROM TB 
ORDER BY NLSSORT(NAMES, 'NLS_SORT=VIETNAMESE') ASC;

结果说明

执行这段SQL后,返回的结果会严格遵循越南语字母表顺序排列:

  1. Ăn kem(以Ă开头,属于越南语字母表中A类的延伸字符)
  2. Bấm kim(B开头)
  3. Đục lỗ, gắn, đóng nút da trên nắp(Đ开头,排在常规D之后)
  4. Quét keo, dán mylar da đệm mắt cáo(Q开头)

可选的全局会话设置

如果你希望当前数据库会话中所有查询都默认使用越南语排序,可以执行以下会话级参数配置:

ALTER SESSION SET NLS_SORT=VIETNAMESE;
ALTER SESSION SET NLS_COMP=LINGUISTIC;

设置完成后,普通的ORDER BY NAMES ASC就会自动应用越南语排序规则,不需要每次查询都手动调用NLSSORT函数。

内容的提问来源于stack exchange,提问作者Hong Van Vit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:15:44