SQL小技巧一拼音首字母的模糊查询

创建函数,把中文字段翻译成拼音缩写,例如“你好”翻译成“NH”

复制代码
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION   [dbo].[fun_GetPy](@str   NVARCHAR(4000)) 
RETURNS   NVARCHAR(4000) 
AS 
BEGIN 
DECLARE   @strlen   INT,@re   NVARCHAR(4000) 
DECLARE   @t   TABLE(chr   NCHAR(1)   COLLATE   Chinese_PRC_CI_AS,letter   NCHAR(1)) 
INSERT   INTO   @t(chr,letter) 
    SELECT   '', 'A '   UNION   ALL   SELECT   '', 'B '   UNION   ALL 
    SELECT   '', 'C '   UNION   ALL   SELECT   '', 'D '   UNION   ALL 
    SELECT   '', 'E '   UNION   ALL   SELECT   '', 'F '   UNION   ALL 
    SELECT   '', 'G '   UNION   ALL   SELECT   '', 'H '   UNION   ALL 
    SELECT   '', 'J '   UNION   ALL   SELECT   '', 'K '   UNION   ALL 
    SELECT   '', 'L '   UNION   ALL   SELECT   '', 'M '   UNION   ALL 
    SELECT   '', 'N '   UNION   ALL   SELECT   '', 'O '   UNION   ALL 
    SELECT   '', 'P '   UNION   ALL   SELECT   '', 'Q '   UNION   ALL 
    SELECT   '', 'R '   UNION   ALL   SELECT   '', 'S '   UNION   ALL 
    SELECT   '', 'T '   UNION   ALL   SELECT   '', 'W '   UNION   ALL 
    SELECT   '', 'X '   UNION   ALL   SELECT   '', 'Y '   UNION   ALL 
    SELECT   '', 'Z ' 
    SELECT   @strlen=LEN(@str),@re= ' ' 
    WHILE   @strlen> 0 
    BEGIN 
        SELECT   TOP   1   @re=letter+@re,@strlen=@strlen-1 
            FROM   @t   a   WHERE   chr <=SUBSTRING(@str,@strlen,1) 
            ORDER   BY   chr   DESC 
        IF   @@rowcount=0 
            SELECT   @re=SUBSTRING(@str,@strlen,1)+@re,@strlen=@strlen-1 
    END 
    RETURN(@re) 
END
GO
复制代码

执行函数如下图:

 

posted @   海角之上  阅读(926)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2017-11-13 jquery.lazyload插件实现图片延迟加载详解
点击右上角即可分享
微信分享提示