UPPER() 用于特殊字符 (ascii 181)

vin*_*vin 0 sql t-sql sql-server

在维基百科中,希腊字母 Mu ( https://en.wikipedia.org/wiki/Mu_(letter) ) 具有不同的大写和小写字符。在 T-SQL 中,当使用该upper()函数时,它会忽略这一点并且不会被转换。但是,在其他系统(如 informatica)中,它确实知道如何输出正确的字符。我如何获得这个的 T-SQL 版本。我试过在没有运气的列上使用排序规则。

例如(我已经尝试了以下所有排序规则sys.fn_helpcollations()

select  
  upper(MERCHANT_NAME collate SQL_Hungarian_CP1250_CI_AS) as converted
from my test table
Run Code Online (Sandbox Code Playgroud)

但它输出:µ
不是我期望的:M

Pio*_*otr 5

ASCII 字符 181(微符号)没有大写形式。
希腊小写字母 Mu 应该用 UTF-8 对 206 188 来表示。这个由函数 UPPER 正确转换为大写 Mu。
如果必须使用 UPPER 函数,则需要对希腊字母使用正确的 UTF 代码,而不是数学符号。

从维基百科(https://en.wikipedia.org/wiki/Mu_(letter))你有以下 5 个符号:

  • 希腊大写字母 mu(UTF-8:206 156,Windows 1525 中不存在)
  • 希腊小写字母 mu(UTF-8:206 188,Windows 1525 中不存在)
  • 微符号(UTF-8:194 181,Windows 1525:181)
  • 科普特大写字母mi
  • 科普特小写字母 mi

希腊小写字母 mu 和 micro sign 看起来完全一样。