我正在尝试使用撇号查询客户名称,但它看起来像一个特殊字符?

Posted

技术标签:

【中文标题】我正在尝试使用撇号查询客户名称,但它看起来像一个特殊字符?【英文标题】:I'm trying to query the customer name with an apostrophe but it looks like a special character? 【发布时间】:2015-01-18 17:08:17 【问题描述】:

我正在使用 Itzik Ben-Gan 所著的 Microsoft SQL Server 2012 T-SQL Fundamentals 一书的 T-SQL 数据库示例。 (http://tsql.solidq.com/books/tsqlfund2012/)

我正在尝试查询客户名称 O'Brien,Dave,但它正在变成一个挑战。撇号不是我键盘上的撇号。它也不是我键盘上的`。我尝试在字符图中搜索它,但结果也是空的。我如何输入那个字符?我如何将它放在 LIKE 语句中?

谢谢

编辑:这是 NVARCHAR 字段的内容

'O’Brien, Dave'

我已将整个名称用键盘上的单引号括起来。正如你所看到的,它是不同的。我相信这是因为列类型是 NVARCHAR。但是不知道怎么查询?

此查询不返回记录:

SELECT [custid]
  ,[companyname]
  ,[contactname]  
 FROM [TSQL2012_Jones].[Sales].[Customers] where contactname = N'O''Brien, Dave'

【问题讨论】:

您可以编辑您的问题以包含您的查询尝试吗? SQL to Query text in access with an apostrophe in it的可能重复 已回答重复问题 - ***.com/questions/6764197/… - ***.com/questions/6509159/… Bryan Swan,这不是重复的问题。从我添加到原始帖子中的 SQL 可以看出,我知道如何使用 2 个单引号查询撇号。要测试我的代码,请访问提供的链接,下载本书的源代码并运行 tsql2012.sql 文件来创建我所说的示例数据库。谢谢 仅供参考,如果您需要知道某个特定字符是什么,请将其添加到UNICODE(N'funky_character') 函数中,如下所示:SELECT UNICODE(N'’'), NCHAR(8217); 【参考方案1】:

撇号是 unicode 字符 %u2019。 您可以使用nchar() 函数获取该字符

...
where contactname = N'O' + nchar(0x2019) + 'Brien, Dave'

unicode escaping tool

【讨论】:

也可以直接使用文字串:N'O’Brien, Dave' 这是正确的以及 srutzky 对主要问题的评论。谢谢你们俩!这是我发现的一个链接,显示了“右单引号”的十六进制和十进制值...unicodemap.org/details/0x2019【参考方案2】:
SELECT [custid]
  ,[companyname]
  ,[contactname]  
 FROM [TSQL2012_Jones].[Sales].[Customers] where contactname LIKE N'O_Brien, Dave'

【讨论】:

以上是关于我正在尝试使用撇号查询客户名称,但它看起来像一个特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱像 ' 这样出现而不是撇号的字符? [复制]

防止使用参数查询不工作的转义撇号

使用 postgres/Python 选择撇号

iphone sdk,撇号显示为问号

替换 bq SQL 中的撇号或引号

尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题