SQL Server 中获取字符串拼音的标量函数实现
IF OBJECT_ID(N'dbo.ufn_Pinyin', N'FN') IS NOT NULL
BEGIN
DROP FUNCTION dbo.ufn_Pinyin;
END
GO --==================================
-- 功能: 获取字符串的拼音
-- 说明: 针对中文汉字的多音字情况,可以在函数中增加多音字的字母匹配,缺点就是以后遇到该中文汉字不论其作出语境如何都会按照其多音字的字母匹配。
-- 作者: XXX
-- 创建: XXXX-XX-XX
-- 修改: XXX-XXX-XX XXX XXXXXXXX
-- 调用: SELECT dbo.ufn_Pinyin(N'中国') AS Pinyin;
--==================================
CREATE FUNCTION dbo.ufn_Pinyin
(
@chvnStr NVARCHAR() -- 字符串
) RETURNS NVARCHAR()
--$Encode$--
AS
BEGIN
-- NULL默认值处理
SET @chvnStr = ISNULL(@chvnStr, N''); -- 声明局部变量
DECLARE
@intLen AS INT,
@chvnPinyin AS NVARCHAR(),
@chnCharacter AS NCHAR();
-- 初始化局部变量
SELECT
@intLen = ,
@chvnPinyin = N'',
@chnCharacter = N''; -- 插入的字符串为空字符串则直接返回该函数
IF @chvnStr = N''
BEGIN
RETURN @chvnPinyin;
END -- 声明中文汉字的局部表变量
DECLARE @tblChineseCharacter TABLE (
ChineseCharacter NCHAR() COLLATE Chinese_PRC_CI_AS NOT NULL,
Letter NCHAR() NOT NULL
); -- 向中文汉字的局部表变量插入数据
INSERT INTO @tblChineseCharacter (ChineseCharacter, Letter)
SELECT N'吖', N'A' UNION ALL SELECT N'八', 'B' UNION ALL SELECT N'嚓', 'C' UNION ALL SELECT N'咑', N'D' UNION ALL
SELECT N'妸', N'E' UNION ALL SELECT N'发', 'F' UNION ALL SELECT N'旮', 'G' UNION ALL SELECT N'铪', N'H' UNION ALL
SELECT N'丌', N'J' UNION ALL SELECT N'咔', 'K' UNION ALL SELECT N'垃', 'L' UNION ALL SELECT N'嘸', N'M' UNION ALL
SELECT N'拏', N'N' UNION ALL SELECT N'噢', 'O' UNION ALL SELECT N'妑', 'P' UNION ALL SELECT N'七', N'Q' UNION ALL
SELECT N'呥', N'R' UNION ALL SELECT N'仨', 'S' UNION ALL SELECT N'他', 'T' UNION ALL SELECT N'屲', N'W' UNION ALL
SELECT N'夕', N'X' UNION ALL SELECT N'丫', 'Y' UNION ALL SELECT N'帀', 'Z' UNION ALL SELECT N'参', N'S' /*增加多音字的字母匹配*/; -- 获取字符串的长度
SET @intLen= LEN(@chvnStr); WHILE @intLen >= /*@intLen > 0*/
BEGIN
-- 从后往前逐次获取单个字符
SET @chnCharacter = SUBSTRING(@chvnStr, @intLen, ); -- 获取当前字符对应的字母
SELECT TOP @chvnPinyin = Letter + @chvnPinyin
FROM @tblChineseCharacter
WHERE ChineseCharacter <= @chnCharacter
ORDER BY ChineseCharacter DESC; -- 如果当前受影响的行数为0,则表示当前字符可能是中文外的其他字符,如英文字符等等
IF @@ROWCOUNT =
BEGIN
SET @chvnPinyin = SUBSTRING(@chvnStr, @intLen, ) + @chvnPinyin;
END -- 字符串长度局部变量递减
SET @intLen = @intLen - ;
END RETURN @chvnPinyin;
END
GO
演示该函数的效果,如下的T-SQL:
SELECT dbo.ufn_Pinyin(N'中国') AS ColName,dbo.ufn_Pinyin(N'中国ilove你') AS Col2Name, dbo.ufn_Pinyin(N'中国我爱你') AS Col3Name;
GO
执行的后的查询结果如下:

SQL Server 中获取字符串拼音的标量函数实现的更多相关文章
- SQL Server中截取字符串常用函数
SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...
- 在SQL SERVER中获取表中的第二条数据
在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...
- SQL Server 中截取字符串常用的函数
SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要 ...
- sql server中截取字符串的常用函数
我们如果要在sql server中,使用截取字符串的方法要怎样使用呢? sql server提供了3个常用截取字符串方法,LEFT().RIGHT().SUBSTRING() /****** Sql ...
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...
- SQL SERVER中获取表间主外键关系
sql server 2008中的主外键关系获取方式: 转自:http://www.cnblogs.com/ke10/archive/2012/06/11/2544655.html SELECT OB ...
- SQL Server中获取指定时间段内的所有日期
DECLARE @days INT, @date_start DATETIME = '2016-11-01', @date_end DATETIME = '2016-11-10' SET @days ...
- SQL server中获取语句执行时间
在写代码的时候,有时候实现一个功能会有好多个方法,有时候会做一下方法的耗时对比,综合下时间复杂度与空间复杂度,写出最好的代码: 同样,在写一些SQL查询,SQL代码的时候,也希望能写出一个高效一点的查 ...
- SQL Server中判断字符串出现的位置及字符串截取
首先建一张测试表: )); insert into teststring values ('张三,李四,王五,马六,萧十一,皇宫'); 1.判断字符串中某字符(字符串)出现的次数,第一次出现的位置最后 ...
随机推荐
- 第 16 章 CSS 盒模型[下]
学习要点: 1.元素可见性 2.元素盒类型 3.元素的浮动 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素可见性 使用 vis ...
- 项目总结笔记系列 Maven Session1
主题:Maven 参考地址: 1.http://www.yiibai.com/maven/ 2.http://www.icoolxue.com/ 目录 1.环境搭建 2.pom.xml文件解析 3.m ...
- spring入门(一)
前面介绍了spring环境的搭建,在搭建spring环境的时候分为java环境和javaWeb环境,在javaWeb环境下通常会结合springMVC使用,在java项目中只需要把spring的包导入 ...
- Hibernate(六)__对象的三种状态
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象. 持久(persistent):数据库中有数据与之对应,当前 ...
- 2013年最新流行的响应式 WordPress 主题【上篇】
WordPress 是最流行的内容管理系统,经历了多年的发展和演变.它的成功体现在庞大的社区,数百万的用户,设计师和开发者推动着 WordPress 往更高的层次发展. 海量的免费主题是 WordPr ...
- jQuery静态方法type使用和源码分析
jQuery.type方法是检测数据类型的工具方法,在分析其用法之前先总结下js给我们提供了那些监测数据类型的方法: 一.typeof 操作符 下面是测试代码 var data=[],a='123', ...
- JavaScript学习笔记3之 数组 & arguments(参数对象)& 数字和字符串转换 & innerText/innerHTML & 鼠标事件
一.Array数组 1.数组初始化(Array属于对象类型) /*关于数组的初始化*/ //1.创建 Array 对象--方法1: var arr1=[]; arr1[0]='aa';//给数组元素赋 ...
- cordova 添加闪屏效果
为项目添加SplashScreen插件 在Cordova项目目录运行: cordova plugin add apache.cordova.splashscreen 这个命令从插件git库下载插件代码 ...
- iOS:JSON格式字符串转字典,字典转JSON格式字符串
在iOS开发中,和服务器交互中,经常用到字典和JSON格式字符串相互转换. 代码如下: 1.JSON格式字符串转字典 + (NSDictionary *)dictionaryWithJsonStrin ...
- 让background的图片不随着view的大小而改变
方法是在drawable文件中定义一个背景的xml文件. <?xml version="1.0" encoding="utf-8"?> <bi ...