时间:2021-05-28
方法一:先查询出所有记录,然后在逻辑层转化为拼音首字母后查询,显然傻瓜才会这么做。
方法二:在需要搜索的表中添加一个字段用于存放被检索字段内容对应的拼音,在搜索的时候同时去查询这两个字段,这种方法可行,但会增加数据库存放的大小。
方法三:在数据库中建立一个函数,在执行查询语句时通过此函数来转化搜索,函数如下:
复制代码 代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: xoyozo
-- Create date: 2010-4-17
-- Description: 提供中文首字母
-- =============================================
CREATE FUNCTION fun_getPY
(
@str NVARCHAR(4000)
)
RETURNS NVARCHAR(4000)
AS
BEGIN
DECLARE @word NCHAR(1),@PY NVARCHAR(4000)
SET @PY=''
WHILE len(@str)>0
BEGIN
SET @word=left(@str,1)
SET @PY=@PY+(CASE WHEN unicode(@word) BETWEEN 19968 AND 19968+20901
THEN (SELECT TOP 1 PY FROM (
SELECT 'A' AS PY,N'驁' AS word
UNION ALL SELECT 'B',N'簿'
UNION ALL SELECT 'C',N'錯'
UNION ALL SELECT 'D',N'鵽'
UNION ALL SELECT 'E',N'樲'
UNION ALL SELECT 'F',N'鰒'
UNION ALL SELECT 'G',N'腂'
UNION ALL SELECT 'H',N'夻'
UNION ALL SELECT 'J',N'攈'
UNION ALL SELECT 'K',N'穒'
UNION ALL SELECT 'L',N'鱳'
UNION ALL SELECT 'M',N'旀'
UNION ALL SELECT 'N',N'桛'
UNION ALL SELECT 'O',N'漚'
UNION ALL SELECT 'P',N'曝'
UNION ALL SELECT 'Q',N'囕'
UNION ALL SELECT 'R',N'鶸'
UNION ALL SELECT 'S',N'蜶'
UNION ALL SELECT 'T',N'籜'
UNION ALL SELECT 'W',N'鶩'
UNION ALL SELECT 'X',N'鑂'
UNION ALL SELECT 'Y',N'韻'
UNION ALL SELECT 'Z',N'咗'
) T
WHERE word>=@word COLLATE Chinese_PRC_CS_AS_KS_WS
ORDER BY PY ASC) ELSE @word END)
SET @str=right(@str,len(@str)-1)
END
RETURN @PY
END
使用方法:
复制代码 代码如下:
select * from 表 where fun_getPY(字段) like N'%zgr%'
此方法是最快捷方便的,通过测试在文章表中搜索标题首字母,其耗时大约为不使用此函数搜索的 3 倍,相信部署在小数据量的项目中的成本是非常低的。
LINQ 方式操作
初学 LINQ 的朋友或许对 .dbml 文件不是很熟悉,数据库中的表可以直接拖动到 .dbml 的左侧,而存储过程、函数等可以直接拖到其右侧,然后就可以直接在逻辑使用了,下面是例子:
复制代码 代码如下:
DataClasses1DataContext db = new DataClasses1DataContext();
var q = from d in db.Documents
where d.Title.Contains("zgr") || db.fun_getPY(d.Title).Contains("zgr")
select d;
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#实现汉字转拼音或转拼音首字母的方法。分享给大家供大家参考。具体实现方法如下://////汉字转拼音或转拼音首字母///publicclassC
一、问题描述汉字转化为对应的拼音或者获取汉字拼音的首字母,这些都是在开发中经常遇到的问题,在获取汉字的拼音或者拼音的首字母之后,我们在推荐或者搜索部门可以很大程
获取汉字拼音的首字母是一个在做项目的过程中经常需要用到的功能,今天我们主要来探讨下C#获取汉字的拼音首字母//////在指定的字符串列表CnStr中检索符合拼音
asp.net操作access数据库是常见的数据库操作应用,本文就来实例讲解一下asp.net实现access数据库分页的方法。希望对大家的asp.net程序设
本文实例讲述了asp.net中IDataParameter调用存储过程的实现方法,是asp.net数据库程序设计中非常实用的技巧。分享给大家供大家参考。具体实现