【问题标题】:Converting None latin characters into latin charcters in Azure SQL Server在 Azure SQL Server 中将非拉丁字符转换为拉丁字符
【发布时间】:2020-04-08 12:14:52
【问题描述】:

在从数据库(即 Azure SQL Server)中的数据生成报告时,我想使用一个函数将非拉丁字符转换为拉丁字符。即输入原始名称并输出带有拉丁字符的名称

例如,如果名称包含以下内容之一:

Ä ä À à Á á Â â Ã ã Å å Ǎ ǎ Ą ą Ă ă Æ æ

我想用Aa 替换非拉丁字符。

如果名称包含以下内容之一:

Ç ç Ć ć Ĉ ĉ Č č

我想用Cc 替换非拉丁字符。

这是要替换的非拉丁字符列表。它很长,所以我想问是否有人知道这样做的聪明方法,而不是使用这么多替换操作的蛮力:

感谢您的帮助。

【问题讨论】:

  • TRANSLATE;然后嵌套它们?祝你好运!

标签: sql sql-server azure-sql-server


【解决方案1】:

在您的 SELECT 语句中使用 COLLATE SQL_Latin1_General_CP1253_CI_AI

例如:

SELECT 'Ä ä À à Á á Â â Ã ã Å å Ǎ ǎ Ą ą Ă ă Æ æ' COLLATE SQL_Latin1_General_CP1253_CI_AI as [result]

它适用于图像中指定的几乎所有字符,除了Ææ 等少数字符。如果确实需要,您可以将TRANSLATE 用于剩余字符。

您可以从here阅读更多内容。

【讨论】:

  • 谢谢。不确定我将如何使用翻译来处理那些给定的替换字符实际上是两个字符。我不需要翻译吗?翻译(@first_name,'Ææ','Aeae')
  • 查看此fiddle。请注意 TRANSLATE 在 SQL Server 2017 及更高版本中可用。如果您使用的是早期的 SQL Server 2017,请使用 REPLACE
  • 谢谢,我不能在函数中这样使用它:@first_name_without_none_latin_chaaracters = Translate (@first_name,'Ææ','Aa') COLLATE Latin1_General_CS_AS 因为我在函数中需要它而不仅仅是一个选择。
  • 然后把它变成一个函数,@user1372603。如果必须,您拥有的解决方案不仅仅是简单地制作成一个函数。为什么你需要一个标量函数来做到这一点?除非您拥有 SQL Server 2019,否则由于缺少内联,我建议您反对该决定。
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多