SQL Server中的U + 02BB字符问题LIKE搜索

时间:2009-11-20 15:10:53

标签: sql-server

我的SQL表有像

这样的行
Hawaiʻi 
01
abcʻdef
ʻabc
abcʻ

所有“撇号”实际上都是okina字符(U + 02BB)

当我使用以下搜索语句时

select text01 from atable where text01 like N'%ʻ%'

我得到了所有返回的行,甚至是“01”

ESCAPE子句(例如LIKE N'%!'%'ESCAPE'!')无效

SQL Server 2005 SP3

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

假设你的okina由NCHAR(96)代表(我认为是对的),那么你就有这样的字符串:

select N'Hawai' + nchar(96) + N'i'

然后一个类似的表达式将是:

select case 
  when ( N'Hawai' + nchar(96) + N'i' ) like ( N'%' + NCHAR(96) + N'%' )
  then 'Found okina!'
  else 'D''OH!' 
  end

Mele Kalikimaka ame Hauoli Makahiki Hou!

答案 1 :(得分:0)

也许尝试CHARINDEX,如下:

DECLARE @FindThis nchar(1)
SET @FindThis =  --  err, however you get this particular character into a variable

SELECT text01 from atable where charindex(@FindThis, text01) > 0

答案 2 :(得分:0)

这只能在我的测试中获得一个结果(MSSQL的Web浏览器自定义界面,我的Mac上暂时没有企业管理器):

select text01 from atable where text01 like N'%[ʻ]%'

您是否验证过创建SQL语句并传递它的代码是否正确发送了正确的unicode字符?

试试这个:

SELECT UNICODE('ʻ')

或者,它可能是整理问题...整理设置对字符串比较有一些影响。