今天遇到一个需求,客户要求在系统客户端选择客户的时候,可以用拼音首拼去快速过滤选择,此时我们在客户表里面加多一个拼音首拼字段CustPY来记录,字段加好了,我们要把所有客户名称的拼音简拼都更新到CustPY字段中。

为此利用以下函数做了个批量更新

执行语句:UPDATE  客户表 SET  CustPY=dbo.[Fn_GetPinYin](客户名称字段)

这样就可以了。需要注意的是:多音字。例如 SELECT dbo.[Fn_GetPinYin]('重庆') 返回ZQ    谨此记录。

-- =============================================
-- 调用:SELECT dbo.[Fn_GetPinYin]('中国')
-- Create date: 2015-01-06
-- Description:    返回汉字拼音首拼
-- =============================================
CREATE  FUNCTION [dbo].[Fn_GetPinYin] (@str NVARCHAR(4000))
RETURNS NVARCHAR(4000)
AS
    BEGIN
        DECLARE @word NCHAR(1) ,
            @PY NVARCHAR(4000)

        SET @PY=''

        SET @str=REPLACE(@str, '(', '(')
        SET @str=REPLACE(@str, ')', ')')

        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

 

如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。

SQL标量值函数:返回汉字拼音首拼的更多相关文章

  1. 常用Sql 标量值函数

    1.汉字拼音首字母 /****** Object: UserDefinedFunction [dbo].[fnGetHzPY] Script Date: 08/16/2018 09:04:47 Des ...

  2. sql标量值函数,将汉字转化为拼音,无音标

    USE [db_Test]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO create function [dbo].[fn_GetPinyin]( ...

  3. SQL函数取汉字拼音首字母

    )='') ) as begin ), ) , ,) if @chn > 'z' if( @chn < '八' ) set @c = 'A' else if ( @chn < '嚓' ...

  4. SQL标量值函数:小写金额转大写

    我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到. 转换大小写的方法有很多,以下是从数据库函数方面解决这一问题. 效果如图: 调用:SELECT dbo.[Fn_Conve ...

  5. sql中的表值函数与标量值函数区别与用法

    通俗来讲: 听名字就知道区别了 表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂:标量值函数返回的只是一个值 一 .表值函数又分为内联函数与多语句函数 (1 ...

  6. sqlserver 表值函数与标量值函数

    除了在我们常用的程序开发中要用到函数外,在sql语句中也常用到函数,不论哪种,思想都没有变,都是为了封装,可复用. 创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些. 一.表值 ...

  7. MySQL通过函数获取字符串汉字拼音首字母大写字符串

    DELIMITER $$ DROP FUNCTION IF EXISTS `Fun_GetPY`$$ CREATE FUNCTION `HIS`.`Fun_GetPY` (in_string VARC ...

  8. SQL表值函数和标量值函数的区别

    SQL表值函数和标量值函数的区别 写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的, ...

  9. sql 表值函数与标量值函数

    写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量 ...

随机推荐

  1. 关于用JAVA开发短信方面的知识

      现在流行的网络业务莫过于短信了.网易新浪等都因此而盈利,股价上涨.我凭自己的经验和公司支持,也就乘着东风来研究一下了! 首先,你要选择一台移动或者联通的短信服务器做你们的发送短信接口.这是最关键的 ...

  2. 每天一个Linux命令(17)whereis命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息.     (1)用法:   用法:    w ...

  3. 0523 CSS知识点

    高级选择器分为:后代选择器.子代选择器.并集选择器.交集选择器 后代选择器 使用空格表示后代选择器.顾名思义,父元素的后代(包括儿子,孙子,重孙子) .father .item .a p{color: ...

  4. JavaScript在执行代码之前会校验代码,声明变量提前至当前作用域最前面。

    var name = 123; function getName(){ console.log(name); } getName(); 输出123 -------------------------- ...

  5. 《python基础教程(第二版)》学习笔记 字符串(第3章)

    <python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...

  6. EntityFramework 学习 一 Eager Loading

    贪婪加载是指查询一个类型实体的时候同时查询与实体关联的类型 通过Include()方法实现 using (var context = new SchoolDBEntities()) { var stu ...

  7. angularjs $http提交数据探索

    前两天在搞自己的项目,前端js框架用的是angularjs框架:网站整的差不多的时候出事了:那就是当我用$http.post()方法向服务器提交一些数据的时候:后台总是接收不到数据: 于是采用了其他方 ...

  8. 分享知识-快乐自己:虚拟机 NET 网络配置

    第一步: 第二步: 第三步:   第四步:   第五步: 第六步: 第七步: 第九步: 第十步: 第十一步: 第十二步:   第十三步: 成功. 第十四步:开启开机自启动网路连接 cd /etc/sy ...

  9. AMD模块定义规范

    AMD 即Asynchronous Module Definition,中文名是“异步模块定义”的意思.它是一个在浏览器端模块化开发的规范,服务器端的规范是CommonJS.   模块将被异步加载,模 ...

  10. AngularJS学习笔记(三) 单页面webApp和路由(ng-route)

    就我现在的认识,路由($route)这个东西(也许可以加上$location)可以说是ng最重要的东西了.因为angular目前最重要的作用就是做单页面webApp,而路由这个东西是能做到页面跳转的关 ...