复制代码 代码如下: 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%"
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;