我在SQL Server 2008 R2中创建了一个数据库,并在MS Access 2003中创建了.adp
文件格式的前端。此应用程序使用Devnagari Unicode字体作为数据库中的标签和数据。
后端有一个用于存储Unicode数据的表tblBookInfo
。
当我编写查询以查找从特定字符开始的所有记录时,它不会返回所有预期的记录。查询如下:
SELECT *
FROM tblbookinfo info
WHERE
(Language = 1) AND
(Type = 1) AND
Author LIKE N'क%'
它不返回起始字符为“कु”的记录。它返回起始字符为“क”,“कि”,“को”等的记录。
我得到“क”字符的Unicode,即0915和“कु”= 0941
如果我为Unicode字符编号循环'“कु”,我得到0915然后0941但是像''%''不会返回有“कु”的记录
答案 0 :(得分:2)
在我的测试中,如果NVARCHAR
数据类型与Indic_General_100_CI_AI
归类一起使用,那么LIKE
将返回所需的结果:
SELECT *
FROM (
SELECT N'क' UNION ALL
SELECT N'कु' UNION ALL
SELECT N'how (strange!)'
) x (Author)
WHERE x.Author COLLATE Indic_General_100_CI_AI
LIKE N'क%' COLLATE Indic_General_100_CI_AI
输出:
Author
--------------
क
कु
答案 1 :(得分:0)
你能不能只使用OR
运营商:
SELECT *
FROM tblbookinfo info
WHERE
(Language = 1) AND
(Type = 1)
AND
(
(Author LIKE N'क%')
OR
(Author LIKE N'"कु%')
)
答案 2 :(得分:0)
CREATE TABLE #TempTable (Author NVARCHAR(1000) COLLATE Indic_General_100_CI_AI)
GO
INSERT INTO #TempTable
VALUES (N'क'), (N'कि'), (N'को'), (N'कु')
GO
SELECT Author
FROM #TempTable
WHERE Author LIKE N'क%'
GO
<强>结果强>
+--------+
| Author |
+--------+
| क |
| कि |
| को |
| कु |
+--------+