常用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 语句的结果集. 以下示例创建 ...
随机推荐
- [BZOJ4650][NOI2016]优秀的拆分(SAM构建SA)
关于解法这个讲的很清楚了,主要用了设关键点的巧妙思想. 主要想说的是一个刚学的方法:通过后缀自动机建立后缀树,再转成后缀数组. 后缀数组功能强大,但是最令人头疼的地方是模板太难背容易写错.用这个方法, ...
- [P1580] yyy loves Easter_Egg I
Link: P1580 传送门 Solution: 拿来练练字符串的读入: 1.$gets()$相当于$c++$中的$getline()$,但返回值为指针!(无数据时为NULL) (都读入换行符,并将 ...
- 【kd-tree】bzoj1176 [Balkan2007]Mokia
裸题不多说,注意在sqrt(n*log(n))次插入后重构树以保持深度. #include<cstdio> #include<cmath> #include<algori ...
- 【分块】【树状数组】bzoj3744 Gty的妹子序列
离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...
- go时间转化
将string转化为time.Time layout := "2006-01-02 15:04:05" str := "2017-11-24 15:10:22" ...
- 1.4(Mybatis学习笔记)关联映射
一.一对一 mybatis处理一对一主要通过<resultMap>中的<association>元素来处理. <association>元素主要使用方方式有两种: ...
- iOS开发——给ImageView添加点击事件
给ImageView添加点击事件 1: cell.pictureView.userInteractionEnabled = YES; 2: UITapGestureRecognizer ...
- iOS 自定义相机带拍摄区域边框及半透明遮罩层(含源码)
开始时准备封装成ViewController的相机,但是在不改我相机控件源码的情况下,使用者很难自定义UI.于是想到将相机核心功能封装到View里,暴露出功能方法给外面调用,调用者只需将LFCamer ...
- 网络抓包工具Wireshark和Fidder
http://fangxin.blog.51cto.com/1125131/735178 http://blog.csdn.net/jiangwei0910410003/article/details ...
- android出现段错误时的查找定位的方法
android出现段错误时的查找方法,例如出现log: - ::): Fatal signal (SIGSEGV) at ), thread (SurfaceFlinger) - ::): *** * ...