常用Sql 标量值函数
1、汉字拼音首字母

/****** Object: UserDefinedFunction [dbo].[fnGetHzPY]
Script Date: 08/16/2018 09:04:47 Description:获取汉字拼音首字母(简拼)
******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE FUNCTION [dbo].[fnGetHzPY]
(
@str NVARCHAR()
)
RETURNS NVARCHAR()
AS
BEGIN
DECLARE @WORD nchar(), @PY nvarchar()
SET @PY=''
WHILE LEN(@str) >
BEGIN
SET @WORD = left(@str,)
--如果非汉字字符,返回原字符
SET @PY = @PY +
(CASE
WHEN UNICODE(@WORD) BETWEEN and +
THEN (SELECT top 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) - )
END
RETURN @PY
END
GO
2、将数字转换为中文数字

/****** Object: UserDefinedFunction [dbo].[fnGetChinaStringA]
Script Date: 08/16/2018 09:11:59
Description:将数字转换成中文数字
******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE FUNCTION [dbo].[fnGetChinaNumber]
(
@Word INT
)
RETURNS VARCHAR()
AS
BEGIN
DECLARE @varChinaDateString VARCHAR(),
@varReturn VARCHAR(),
@varWord VARCHAR(),
@I SMALLINT SET @varChinaDateString = '〇一二三四五六七八九'
SET @varWord = CAST(@Word AS VARCHAR)
SET @I =
SET @varReturn = '' WHILE @I <= LEN(@varWord)
BEGIN
SET @varReturn = @varReturn + SUBSTRING(@varChinaDateString, SUBSTRING(@varWord,@I,) + , )
SET @I = @I +
END RETURN @varReturn
END GO
3、函数:将字符串转换为Table数据集

/****** Object: UserDefinedFunction [dbo].[fnParaSplit]
Script Date: 08/16/2018 09:25:38
Description:将字符串转换成表
******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE FUNCTION [dbo].[fnParaSplit]
(
@SplitString NVARCHAR(MAX),
@Separator CHAR() = ','
)
RETURNS @SplitStringsTable TABLE
(
[FID] INT IDENTITY(, ),
[Item] VARCHAR()
)
AS
BEGIN
DECLARE @CurrentIndex INT,
@NextIndex INT,
@ReturnText VARCHAR() SET @CurrentIndex = WHILE (@CurrentIndex <= DATALENGTH(@SplitString) / )
BEGIN
SET @NextIndex = CHARINDEX(@Separator, @SplitString, @CurrentIndex) IF(@NextIndex = OR @NextIndex IS NULL)
SELECT @NextIndex = DATALENGTH(@SplitString) / + SET @ReturnText = CONVERT(VARCHAR(), SUBSTRING(@SplitString, @CurrentIndex, @NextIndex-@CurrentIndex)) INSERT INTO @SplitStringsTable
([Item])
VALUES
(@ReturnText) SET @CurrentIndex = @NextIndex +
END RETURN
END GO
附:后续遇到补充。。。
常用Sql 标量值函数的更多相关文章
- SQL标量值函数:小写金额转大写
我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到. 转换大小写的方法有很多,以下是从数据库函数方面解决这一问题. 效果如图: 调用:SELECT dbo.[Fn_Conve ...
- SQL标量值函数:返回汉字拼音首拼
今天遇到一个需求,客户要求在系统客户端选择客户的时候,可以用拼音首拼去快速过滤选择,此时我们在客户表里面加多一个拼音首拼字段CustPY来记录,字段加好了,我们要把所有客户名称的拼音简拼都更新到Cus ...
- sql标量值函数,将汉字转化为拼音,无音标
USE [db_Test]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO create function [dbo].[fn_GetPinyin]( ...
- SQL表值函数和标量值函数的区别
SQL表值函数和标量值函数的区别 写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的, ...
- sql 表值函数与标量值函数
写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量 ...
- sql server 中的表值函数和标量值函数
顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例 ...
- sql中的表值函数与标量值函数区别与用法
通俗来讲: 听名字就知道区别了 表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂:标量值函数返回的只是一个值 一 .表值函数又分为内联函数与多语句函数 (1 ...
- sqlserver 表值函数与标量值函数
除了在我们常用的程序开发中要用到函数外,在sql语句中也常用到函数,不论哪种,思想都没有变,都是为了封装,可复用. 创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些. 一.表值 ...
- sqlserver中的表值函数和标量值函数
顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例创建 ...
随机推荐
- 进程注入后门工具Cymothoa
进程注入后门工具Cymothoa Cymothoa是一款隐秘的后门工具.它通过向目标主机活跃的进程注入恶意代码,从而获取和原进程相同的权限.该工具最大的优点就是不创建新的进程,不容易被发现.由于该 ...
- AtCoder - 2568 Lotus Leaves
Problem Statement There is a pond with a rectangular shape. The pond is divided into a grid with H r ...
- [BZOJ1559]密码
数据范围特别小,考虑状压DP 因为要求给定的字符串在母串中出现,所以可以用AC自动机辅助DP 因为AC自动机不能处理模式串互相包含的情况,所以先把互相包含的串去掉(暴力就行,数据范围太小) 因为要状压 ...
- 【记忆化搜索】bzoj1055 [HAOI2008]玩具取名
f(l,r,c)表示sl...sr能否被合成字符c. #include<cstdio> #include<cstring> using namespace std; int m ...
- 解决ThinkPHP3.2.3框架,PDO驱动类“抛出异常”不起作用的bug
项目中引进了ThinkPHP3.2.3的模型层,发现当SQL语句出错时,系统抛出的异常不是我想要的效果,打开文件 ThinkPHP\Library\Think\Db\Driver.class.php, ...
- JavaScript 的闭包用于什么场景
本文翻译自 MDN ( Mozilla Developer Network ): 原文地址:MDN 译文地址:shixinzhang 的博客 读完本文你将了解到: 词法作用域 闭包 闭包实战场景之回调 ...
- 【InteillJ IDEA】Git的安装+同步项目到GitHub上
需要的工具: 1.InteillJ IDEA 2.Git 3.GitHub帐号 步骤: 1.下载Git 下载地址:https://git-scm.com/downloads 安装完成后 勾选Launc ...
- UNDO表空间损坏导致数据库无法OPEN
在数据库undo表空间文件损坏.或者undo表空间文件缺失的情况下.无法打开数据库. 这两种情况都能够视为一种情况处理,解决方法一样. 场景:在23:10的时候新建一个undo表空间undotbs02 ...
- GLSL使用FBO实现MRT(Multiple Render Targets)绘制到多张纹理 【转】
项目的程序里设计需要将某一帧渲染出来的画面拆成三通道单色图像存到三张纹理里面.要绘制到纹理里,自然就想到FBO了.但是一次要输出多张纹理,这个还没接触过.一阵网上搜索过后,终于了解到了MRT(多重渲染 ...
- kubelet分析
kubelet是k8s中节点上运行的管理工具,它负责接受api-server发送的调度请求,在Node上创建管理pod,并且向api-server同步节点的状态.这篇文章主要讲讲kubelet组件如何 ...