我的数据库数据在数据中具有 unicode 和 html 实体格式的特殊字符。我需要按字母顺序对结果列表进行排序,但是,一些 unicode 数据和 html 实体会弄乱字母顺序(即: 出现在 A 之前,而代码可能是 A 之后的重音 E)。
目前,我只是使用嵌套的替换语句来生成一个“排序”列,因为我的印象是数据库中使用了一组有限的特殊字符。
客户希望安全起见,在排序之前将此页面http://webdesign.about.com/library/bl_htmlcodes.htm上的所有字符转换为英文等价物......
当前代码:
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(@Word, 'À', 'A')
, 'Â', 'A')
, 'Ä', 'A')
, 'Ç', 'C')
, 'É', 'E')
, 'È', 'E')
, 'È', 'E')
, 'Ê', 'E')
, 'Î', 'I')
, 'ï', 'i')
, 'Ø', 'O')
, 'Ő', 'o')
, 'Á', 'A')
, 'Ñ', 'N')
, 'í', 'I')
, 'Ó', 'O')
, 'Ń', 'N')
, 'Č', 'C')
, 'á', 'A')
, 'ő', 'O')
, 'ő', 'o')
, 'ö', 'o')
我意识到这段代码效率非常低 - 它开始时只有几个字符,然后随着时间的推移被添加。
在上面链接的页面上循环浏览所有组合的最佳方式是什么?
更好的是,有人可以确认 unicode 值是否按字母顺序正确排序,如果是,是否有预构建的 SQL Server 2005 函数仅将 HTML 实体(友好、数字和十六进制版本)转换为该列的 Unicode?
谢谢,
托马斯