方法一:先查询出所有记录,然后在逻辑层转化为拼音首字母后查询,显然傻瓜才会这么做。
方法二:在需要搜索的表中添加一个字段用于存放被检索字段内容对应的拼音,在搜索的时候同时去查询这两个字段,这种方法可行,但会增加数据库存放的大小。
方法三:在数据库中建立一个函数,在执行查询语句时通过此函数来转化搜索,函数如下: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
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 的左侧,而存储过程、函数等可以直接拖到其右侧,然后就可以直接在逻辑使用了.
相关推荐
本压缩包文件"ASP.NET数据库入门经典--C#编程篇1.rar"显然是一个关于学习ASP.NET数据库交互的教程资料,可能包含了书签、章节内容等资源,例如bookinfo.dat可能是书籍元数据,pdg文件通常是电子书的页面图像。...
在这个项目中,我们将深入探讨如何在ASP.NET MVC中利用Linq to SQL来实现数据库的增、删、改操作,并结合分页控件提升用户体验。 首先,我们需要创建一个数据上下文类,这个类继承自System.Data.Linq.DataContext,...
总结来说,LINQ数据库访问技术是.NET开发中的一个重要组成部分,它提供了一种统一、类型安全的查询机制,使得对数据库、XML和对象集合的处理变得更加高效和便捷。开发者可以通过学习和掌握LINQ,提升数据操作的能力...
您可能感兴趣的文章:asp.net中通过ALinq让Mysql操作变得如此简单asp.net Linq TO Sql 分页方法asp.net中一个linq分页实现代码asp.net 根据汉字的拼音首字母搜索数据库(附 LINQ 调用方法)asp.net Linq to Xml学习...
在这个Asp.Net+MVC+Linq to SQL2005的入门实例中,我们将深入探讨这三个层面及其相互作用。 1. 表现层(Presentation Layer): 这是用户与应用交互的部分,通常由ASP.NET MVC框架负责。MVC(Model-View-...
【ASP.NET 三层架构图书馆管理系统源码解析】 ASP.NET 是微软公司推出的Web应用程序开发框架,以其高效、稳定和易于维护的特性,在企业级应用中广泛应用。在这个“图书馆管理系统”项目中,采用的是ASP.NET的三层...
在这个场景中,我们将讨论如何在ASP.NET MVC项目中实现一个使用LINQ to SQL的登录功能。 LINQ(Language Integrated Query,语言集成查询)是.NET Framework的一部分,它允许开发者使用C#或VB.NET等语言的语法来...
### ASP.NET中LINQ中文教程知识点详解 #### 一、LINQ简介 - **定义**:LINQ(Language Integrated Query)是一种集成在.NET Framework 3.5中的技术,旨在为.NET开发者提供统一的数据查询和处理方式。LINQ使得开发者...
《.NET项目:Linq后台MVC框架与数据库集成》 在.NET开发环境中,MVC(Model-View-Controller)框架是一种广泛使用的架构模式,它为构建可维护、可扩展的Web应用程序提供了强大的支持。同时,Linq(Language ...
ASP.NET数据库开发是微软.NET框架下用于构建动态网站和应用程序的一种强大工具,它结合了C#或VB.NET等编程语言,以及SQL Server等数据库系统,实现了高效的数据存储和检索功能。在ASP.NET中,数据库开发涵盖了多个...
### ASP.NET 3.5与LINQ:深入解析 #### 一、背景介绍与问题提出 随着软件工程的发展,特别是互联网应用的普及,数据访问和处理成为了一个关键环节。长期以来,传统的面向对象编程模型(Object-Oriented ...
这个“asp.net房屋租赁系统”源码与数据库的压缩包,显然包含了一个完整的Web应用实例,用于实现房屋租赁业务的在线管理。以下是这个系统中可能涉及的一些核心知识点: 1. **MVC(Model-View-Controller)架构**:...
《ASP.NET与数据库程序设计》是一本专注于使用ASP.NET技术进行数据库编程的教程。该压缩包包含的资源丰富,不仅有书籍的电子版,还有可能包括示例代码和其他辅助学习材料,适合对ASP.NET和数据库编程感兴趣的开发者...
ASP.NET 3.5中的LINQ(Language Integrated Query,语言集成查询)技术是微软推出的一种强大的数据查询工具,它允许开发者使用类似SQL的语法在.NET编程语言中进行对象查询。这个压缩包文件包含了一系列关于LINQ在ASP...
总的来说,"ASP.NET操作数据库实例"涵盖了ASP.NET与SQL Server的交互,特别是通过数据绑定和GridView控件来展示和操作数据的方法。掌握这些技术,对于开发动态的、数据驱动的Web应用至关重要。通过学习提供的文档和...
在Asp.NET开发中,数据库交互是不可或缺的一部分,尤其是在构建动态、数据驱动的Web应用程序时。本高级教程将深入探讨Asp.NET与数据库的高级应用,帮助开发者掌握更高效、更安全的数据管理技术。 首先,我们要理解...
本教程《ASP.NET数据库开发技术》将深入探讨在ASP.NET环境中如何有效地进行数据库开发。 首先,我们需要了解ASP.NET中的数据访问层(DAL)。数据访问层是应用程序与数据库之间通信的桥梁,负责执行SQL查询和事务...
在本"ASP.NET数据库开发实用工程案例精选"中,我们将会深入探讨如何利用ASP.NET进行高效且功能丰富的数据库交互。 一、ASP.NET与数据库连接 在ASP.NET中,我们通常使用ADO.NET作为数据访问技术,它提供了对各种...