我正在尝试使用撇号查询客户名称,但它看起来像一个特殊字符?
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'
【讨论】:
以上是关于我正在尝试使用撇号查询客户名称,但它看起来像一个特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章