以前只是了解标量函数这个概念,感觉使用量好像并不大,等我真正做sql编码的时候才发现它的好处。简直太方便了实用了。

我们知道在进行软件开发的时候要定义很多不同类型,每个类型又会分很多项。比如:

搞前端都知道,这就是得下拉框。大多数这样得下拉搜索框都是动态得,也就是说我可以随时增减这里面得项数。而它得value值,一般也都是  value=(int  ) text=开关电源。

牵扯到像这种类型得动态改变下拉框,那么一般数据都要保存得数据库中了,(当然你也可以自己定义一个js文件,改变js文件内容也可以做到),如果存入数据库中,那是怎末存得呢,直接存text值,那么后台取值一般都是去value值。所以,像这样数据库一般都是存value值。但页面显示得时候,用户需要看到得确实text值,而不是一个数字。像这种情况只能两个都存了。而实际我我们只存value只。比如局站类型:

但是,开发一个软件像这种下拉框太多了,都这样存那就比较烦人了,而已不利于后期得管理和维护。那么要怎末做呢。 一般来说,都会建一个字典,专门用来存这些数据得字典。

这样就可以动态改变项数,和改变每一项得参数了。

但是如果这样做的话,我们在从数据库中取数据的时候,取得只是id,但是平台要显示真是类型名字 。比如局站类型:

而这里就要做到我们今天要说的标量函数了。 我们在数据库中新建一个标量函数 Sys_ItemName:

USE [SmartNet]
GO
/****** Object: UserDefinedFunction [dbo].[Sys_ItemName] Script Date: 2019/10/25 星期五 14:45:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Sys_ItemName]
(
@ItemValue varchar(30),
@PValue varchar(30)
)
RETURNS nvarchar(50)
AS
BEGIN DECLARE @ItemName nvarchar(50);
set @ItemName='' SELECT @ItemName = ItemName FROM Sys_DataItem WHERE ItemValue=@ItemValue and PValue=@PValue RETURN @ItemName END

  而这个函数要取得数据就是我们上面建的通用字典了。

标量函数中,我们定义的两个变量:@ItemValue varchar(30),@PValue varchar(30) 也就是,字典表中对应的ItemValue ,PValue 两列值了。

那接下来就是如何用这个标量函数了:

比如我们根据上面的局站信息表来做演示,查询局站信息表中的所有数据,这里我们只取这一列做演示:

这里我们可以看到局站信息表中,局站类型的id了:和上面的数据库字典对应,(1代表 基站,2代表支局,3代表端局)。但是我做了我们正常搜索,但显示的都是id,页面列表显示总不能都是数字吧,那样只能自己知道是什么了。所以,如果用到标量函数,这个问题就迎刃而解了。

大家可以看到上面的查询结果是真名了。

其实说标量函数,也就是几句话而已,但是我想的是,要用实际场景的实际应用来演示会更容易了解!

Sqlserver 标量函数的更多相关文章

  1. [Irving]SqlServer 标量函数 详解【转】

    --创建用户定义函数.这是一个已保存 Transact-SQL 或公共语言运行时 (CLR) 例程,--该例程可返回一个值.用户定义函数不能用于执行修改数据库状态的操作.--与系统函数一样,用户定义函 ...

  2. SQLServer之创建标量函数

    创建标量函数注意事项 在 SQL Server 和 Azure SQL Database 中创建用户定义函数. 用户定义函数是接受参数.执行操作(例如复杂计算)并将操作结果以值的形式返回的 Trans ...

  3. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  4. sqlserver自定义函数的创建与调用

    sqlserver中有系统提供的函数,像avg.sum.getdate()等,用户还可以自定义函数. 用户自定义的函数包括:标量函数和表值函数,其中标量函数和系统函数的用法一样,表值函数根据主体的定义 ...

  5. 转载——CLR标量函数、表值函数和聚合函数(UDA)

    本节主要介绍使用CLR创建标量函数,表值函数和聚合函数. 所谓标量函数指的就是此函数只返回一个值.表值函数返回值是一个表.聚合函数是在select语句中使用的,用来聚合一个结果集,类似于Sum()或是 ...

  6. PCB MS SQL 标量函数与表值函数(CLR) 实现文件与目录操作

    一.C#写SQL SERVER(CLR)实现文件操作 标量函数: 文件移动 ,复制,检测文件存在,写入新文件文本,读取文本,创建目录,删除目录,检测目录是否存在 /// <summary> ...

  7. PCB MS SQL 标量函数(CLR) 实现DataTable转HTML的方法

    一.准备需转为HMLT字符串的DataTable数据 在数据库中执行一段SQL返回的数据 需转换后的HTML的文本 <html ><head></head>< ...

  8. PCB MS SQL 标量函数(CLR) 实现DataTable转Json方法

    一.准备需转为json字符串的DataTable数据 在数据库中执行一段SQL返回的数据 需转换后的JSON字符串的效果 [{"TechName":"开料",& ...

  9. PCB 周期计算采用 SQL 函数调用.net Dll 标量函数 实现

    PCB 周期计算采用 SQL函数调用.net Dll实现 (实现代码重用目的) 玩过SQL SERVER数据库经常经需要写存储过程,函数之类的,当业务逻辑过于复杂,用SQL去写简直是恶梦, 这里以PC ...

随机推荐

  1. Day 31:CSS选择器、常用CSS样式、盒子模型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 20200119日志 EPLAN高压房 VFD 单线图 心得

    提纲: EPLAN 画单线图的方法,可以先绘制原理图,然后在一个柜子里面的器件 用方框圈起来.方框名称一样.注意 一个工程里面的器件编号是唯一的. 断路器选型. PT 手车 接地刀作用     具体内 ...

  3. P1046 划拳

    P1046 划拳 转跳点:

  4. 讨论(xia che ≖‿≖✧)magic number——1000000007

    为什么要对1000000007取模(取余) 来看这篇博客的基本上都是和我一样脑子有坑的人,要么就是看了我某篇大数阶乘,大数的排列组合等类似博客被忽悠过来的.我刚刚说到那些类型的题目一般都要求将输出结果 ...

  5. linux下anaconda的安装和使用

    1.将python3设置为默认 直接执行这两个命令即可: sudo update-alternatives --install /usr/bin/python python /usr/bin/pyth ...

  6. Mac电脑上怎么设置环境变量

    https://jingyan.baidu.com/article/8065f87f47b29523312498e4.html 环境变量是电脑操作系统中常用的一些变量,作用类似于将一些常用命令所在的文 ...

  7. codeforces 594

    D 给你一个长度为n的括号序列,然后你可以选择交换两个位置,你需要使得能够变成 合法括号序列的起点最多. 题解 人尽皆知的东西:合法的括号序列是,令'('为1,')'为-1,那么前缀和需要>=0 ...

  8. UVA - 11806 Cheerleaders (容斥原理)

    题意:在N*M个方格中放K个点,要求第一行,第一列,最后一行,最后一列必须放,问有多少种方法. 分析: 1.集合A,B,C,D分别代表第一行,第一列,最后一行,最后一列放. 则这四行必须放=随便放C[ ...

  9. html通配符

    ♠ ♠ ♠ 黑桃 ♣ ♣ ♣ 梅花 ♥ ♥ ♥ 红桃,心 ♦ ♦ ♦ 方块牌 ◊ ◊ ◊ 菱形 † † † 匕首 ‡ ‡ ‡ 双剑号 ¡ ¡ ¡ 反向感叹号 ¿ ¿ ¿ 反向问号 ← ← ← 左箭头 ...

  10. 使用ansible tasks生成linux巡检报告

    一直想做个关于资源巡检的功能,其需求就是通过邮件的形式来查看linux资源的使用情况,超出一定的阈值时高亮显示出来.也有人说啦,这个需求通过监控zabbix, prometheus都能做呀,何必自己重 ...