Azure SQL 处理特殊字符

Posted

技术标签:

【中文标题】Azure SQL 处理特殊字符【英文标题】:Azure SQL handling special characters 【发布时间】:2021-12-26 11:39:48 【问题描述】:

我正在使用带有休眠(作为 ORM)和 Java 作为编程语言的 Azure SQL(作为数据库),我们有一个地址列,将地址存储为 JSON,我们在存储转换为“的特殊字符时遇到问题” ???"(问号)

示例:“Ω”被存储为“?”

那张桌子:

CREATE TABLE test.[order](.....
.......
[shipping_address] [nvarchar](max) NOT NULL
  .......
  .......
  )

提前致谢。

这是我们可以使用列类型 (Nvarchar) 和休眠中的数据类型作为字符串来解决的第一个问题。它适用于本地的 SQL-Server,但在 azure-sql 的 UAT 中,它不起作用。两者都有相同的排序规则:SQL_Latin1_General_CP1_CI_AS

【问题讨论】:

Mojibake - 另存为 utf8? 听起来您正在尝试将其存储在不支持所需排序规则的 varchar 列类型中。请Edit您的问题包括表模式,包括列排序规则 - 作为文本。如果列未指定特定排序规则,请同时包含数据库的默认排序规则。 如何将值传递给 SQL?你在使用参数吗?如果是这样,您是否将它们传递为nvarchar 【参考方案1】: SQL 需要 NVarchar 来存储特殊字符。 您已经使用 NVarchar 数据类型创建了列,这非常好。 在为插入语句传递参数时,将列数据类型编辑为 NVarchar。 如果手动插入,必须在字符前使用N

【讨论】:

是的,你说得对,我认为你说的也很有效。问题的下一部分是我正在使用 Hibernate 并将地址设置为 UDT(计算如何更改它)。你用过 Hibernate 作为 ORM 层吗? 正如您已经明确提到的,它与已发布的问题无关,您能否提出一个新的请求,以便其他社区成员也能更快地解决它。 @soubhagyasenapati - 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢 通过从 User-Defined-Type 转移到 String 数据类型,我们能够在 SQL-Server 中存储和检索特殊字符。但在实际生产中,我们使用 Azure-SQL,这是行不通的。两者都有排序规则 "SQL_Latin1_General_CP1_CI_AS" 。任何帮助将不胜感激! 请参考azure.microsoft.com/en-in/blog/…

以上是关于Azure SQL 处理特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

带有特殊字符的 Azure 连接字符串

将数据加载到 SQL 表中时处理特殊字符和转义字符

Oracle中特殊字符&和'的处理方案

mysql 有几个特殊字符的函数

sql中如何判断字符串中含有特殊字符

sql中如何判断字符串中含有特殊字符