精华内容
下载资源
问答
  • 通俗来讲: 听名字就知道区别了  ...一 、表值函数又分为内联函数与语句函数 (1)内联函数就是没有函数主体表是单个 SELECT。 下面是一个不带输入参数的表值函数 create function tvpoints() returns table as

    通俗来讲:

    听名字就知道区别了 
    表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂;
    标量值函数返回的只是一个值

    一 、表值函数又分为内联函数与多语句函数

    (1)内联函数就是没有函数主体表是单个 SELECT。

    下面是一个不带输入参数的表值函数
    create function tvpoints()
    returns table
    as 
    return
    (
    select * from tb_users
    );
    select * from tvpoints()这个结果返回的是一张表

    (2)下面是带参的内联表值函数

    对于多语句表值函数,在 BEGIN...END 语句块中定义的函数体包含一系列 Transact-SQL 语句,这些语句可生成行并将其插入将返回的表中。
    以下示例创建了一个表值函数.
    create function tvpoints()
    returns @points table (x float, y float)
    as begin
    insert @points values(1,2);
    insert @points values(3,4);
    return;
    end

    select * from tvpoints2(x,y)查询到的是一张表

    (3)标量函数(返回一个具体类型的值而不是一张表了)

    CREATE FUNCTION FUN_DataFormat (@strDate datetime)  
    RETURNS varchar(20)  AS  
    BEGIN 
        
        declare @date varchar(20)
          set @date = DATENAME(YY,@strDate)+'年'+Convert(VARCHAR,MONTH(@strDate))+'月'+Convert(VARCHAR,DAY(@strDate))+'日'
        return @date
    END
    可以通过select dbo.FUN_DataFormat(getdate())来使用。(用的时候一定要在函数前面添加一个dbo或者的话数据库语句报错的会提示不认识的)






    展开全文
  • 函数指针和指针函数用法和区别

    万次阅读 多人点赞 2018-05-24 08:11:10
    函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,...

    前言

    函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。
    今天这里只讲两个相对简单的,其实上面说那些太复杂的东西也真的很少用,即便是用了理解起来很麻烦,所以莫不如先深刻理解这两个比较容易的,并且项目中比较常用到。

    正文

    先来看看两者的定义以及说明。

    指针函数

    定义

    指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
    声明格式为:*类型标识符 函数名(参数表)

    这似乎并不难理解,再进一步描述一下。
    看看下面这个函数声明:

    int fun(int x,int y);
    

    这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。
    接着看下面这个函数声明:

    int *fun(int x,int y);
    

    这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。

    这样描述应该很容易理解了,所谓的指针函数也没什么特别的,和普通函数对比不过就是其返回了一个指针(即地址值)而已。

    指针函数的写法

    int *fun(int x,int y);
    int * fun(int x,int y);
    int* fun(int x,int y);
    

    这个写法看个人习惯,其实如果*靠近返回值类型的话可能更容易理解其定义。

    示例

    (由于本人习惯于 Qt 中进行开发,所以这里为了方便,示例是在 Qt 工程中写的,其语法是一样的,只是输出方式不同)
    来看一个非常简单的示例:

    typedef struct _Data{
        int a;
        int b;
    }Data;
    
    //指针函数
    Data* f(int a,int b){
        Data * data = new Data;
        data->a = a;
        data->b = b;
        return data;
    }
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        //调用指针函数
        Data * myData = f(4,5);
        qDebug() << "f(4,5) = " << myData->a << myData->b;
    
        return a.exec();
    }
    
    

    输出如下:

    f(4,5) =  4 5
    

    注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。
    不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下:

    //指针函数
    void* f(int a,int b){
        Data * data = new Data;
        data->a = a;
        data->b = b;
        return data;
    }
    
    调用:
    Data * myData = static_cast<Data*>(f(4,5));
    

    其输出结果是一样的,不过不建议这么使用,因为强制转换可能会带来风险。

    函数指针

    定义

    函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
    声明格式:类型说明符 (*函数名) (参数)
    如下:

    int (*fun)(int x,int y);
    

    函数指针是需要把一个函数的地址赋值给它,有两种写法:

    fun = &Function;
    fun = Function;
    

    取地址运算符&不是必需的,因为一个函数标识符就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。

    调用函数指针的方式也有两种:

    x = (*fun)();
    x = fun();
    

    两种方式均可,其中第二种看上去和普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数。当然,也要看个人习惯,如果理解其定义,随便怎么用都行啦。

    示例

    int add(int x,int y){
        return x+y;
    }
    int sub(int x,int y){
        return x-y;
    }
    //函数指针
    int (*fun)(int x,int y);
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        //第一种写法
        fun = add;
        qDebug() << "(*fun)(1,2) = " << (*fun)(1,2) ;
    	//第二种写法
        fun = &sub;
        qDebug() << "(*fun)(5,3) = " << (*fun)(5,3)  << fun(5,3);
    
        return a.exec();
    }
    
    

    输出如下:

    (*fun)(1,2) =  3
    (*fun)(5,2) =  2 2
    

    上面说到的几种赋值和调用方式我都分别使用了,其输出结果是一样的。

    二者区别

    通过以上的介绍,应该都能清楚的理解其二者的定义。那么简单的总结下二者的区别:

    定义不同

    指针函数本质是一个函数,其返回值为指针。
    函数指针本质是一个指针,其指向一个函数。

    写法不同

    指针函数:int* fun(int x,int y);
    函数指针:int (*fun)(int x,int y);
    可以简单粗暴的理解为,指针函数的*是属于数据类型的,而函数指针的星号是属于函数名的。
    再简单一点,可以这样辨别两者:函数名带括号的就是函数指针,否则就是指针函数。

    用法不同

    上面已经写了详细示例,这里就不在啰嗦了。

    总而言之,这两个东西很容易搞混淆,一定要深入理解其两者定义和区别,避免犯错。

    另外,本文都是针对普通函数指针进行介绍,如果是C++非静态成员函数指针,其用法会有一些区别,在另外一篇博客中单独介绍,文章在这里

    展开全文
  • 语句表值函数

    千次阅读 2018-11-04 21:21:06
    --语句表值函数 --语句表值函数可以看做是标量函数和内联表值函数的结合体。 --语法: --create function 函数名([参数列表]) --returns 表变量名 table --(表变量的字段定义) --as --begin -- SQL...

    --多语句表值函数

    --多语句表值函数可以看做是标量函数和内联表值函数的结合体。

    --语法:

    --create function 函数名([参数列表])

    --returns 表变量名 table

    --(表变量的字段定义)

    --as

    --begin

    -- SQL语句

    -- return

    --end

     

    --练习:根据性别返回所有学生的学号,姓名,籍贯,数学成绩,如果是女生,就给她们

    --   的数学成绩+10分

    create function Fun_StudentScore(@gender bit)

    returns @stuScore table

    (

      stuNo char(9),

      stuName nvarchar(8),

      city nvarchar(8),

      math int

    )

    as

    begin

     insert  into @stuScore select stuNo,stuName,city,math from student join score

       on student.id=socre.stuId where student.gender=@gender

       if(@gender=0)

       begin

         update @stuScore set math=math+10

       end

       return

    end

    --1.SQL Server函数必须使用returns声明值类型

    --所有的函数必须有返回值,函数体语句的最后一句必须是return

    --函数不嫩能够修改基表中的数据,也就是不能使用insert,update,delete语句

    --调用

    select * from dbo.Fun_StudentScore(1)

     

    展开全文
  • 标量值函数用法

    千次阅读 2011-04-26 09:30:00
    昨天做一个前台显示,就是数据库...本来想着在数据库在加一列,后来有人提议用标量值函数,发现这样挺好的。拿来分享一下。首先新建查询复制下面代码Code: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CR

    昨天做一个前台显示,就是数据库有4个字段都是int型,需要前台把它们合成一个字段输出。本来想着在数据库在加一列,后来有人提议用标量值函数,发现这样挺好的。拿来分享一下。

    首先新建查询复制下面代码

    Code:
    1. SET ANSI_NULLS ON  
    2. GO   
    3. SET QUOTED_IDENTIFIER ON  
    4. GO   
    5. CREATE FUNCTION [dbo].[FormatLocationName](@rack INT,@floor INT,@position INT,@bit INT)   
    6. RETURNS VARCHAR(100)   
    7. AS  
    8. BEGIN  
    9.  DECLARE @strRack VARCHAR(100),@strFloor Varchar(100),@strPosition VARCHAR(100),@strBit varchar(100)   
    10.  DECLARE @strRetrun VaRCHAR(100)   
    11.     
    12.  IF(@rack < 10)   
    13.   BEGIN  
    14.    --IF(@rack < 10)   
    15.     SET @strRack = '0' + CONVERT(VARCHAR(2),@rack)   
    16.    --ELSE   
    17.    -- SET @strRack = CONVERT(VARCHAR(2),@rack)   
    18.   END  
    19.  ELSE  
    20.   SET @strRack = CONVERT(VARCHAR(50),@rack)   
    21.      
    22.  SET @strFloor = CONVERT(VARCHAR(2),@floor)   
    23.      
    24.  IF(@position < 10)   
    25.   BEGIN  
    26.    --IF(@position < 10)   
    27.     --SET @strPosition = '00' + CONVERT(VARCHAR(2),@position)   
    28.    --ELSE IF(@position < 100)   
    29.     SET @strPosition = '0' + CONVERT(VARCHAR(2),@position)   
    30.    --ELSE   
    31.     --SET @strPosition = CONVERT(VARCHAR(2),@position)   
    32.   END  
    33.  ELSE  
    34.   SET @strPosition = CONVERT(VARCHAR(50),@position)   
    35.     
    36.  set @strBit=CONVERT(VARCHAR(2),@bit)   
    37.   
    38.  SET @strRetrun = @strRack + '-' + @strFloor + '-' + @strPosition+'-'+@strBit   
    39.     
    40.  RETURN @strRetrun   
    41. END  

    然后

    Code:
    1. SELECT dbo.FormatLocationName([row], [floor], [line], [bit]) as LocationName,[row], [floor], [line], [bit]FROM [storeinfo]     

    就可以实现不用创建新列就可以组装原有数据库数据了。

    http://hi.baidu.com/zwfec/blog/item/91b5bb350c11c198a71e12ed.html

    展开全文
  • 一元多值函数求极值在实际科研中具有很重要的作用,其中求最大值和求最小值又有相似的地方,只要可以求出两者中的一者,对函数加一个负号就可以求出另一个最值。 下面是一个利用fminbnd函数,结合图形观察得出...
  • Matlab subs函数用法

    万次阅读 多人点赞 2017-01-03 20:16:17
    Matlab subs函数用法 matlab中subs()是符号计算函数,详细用法可以在Matlab的Command Windows输入:help subs。subs()函数表示将符号表达式中的某些符号变量替换为指定的新的变量,常用调用方式为: R = subs(S,...
  • 如果只有九个方格我们可以用解方程的方式来拿到值, 但是在实际的应用中使用解方程的方式来算肯定是不现实, 一般我们会采用迭代的方式来计算值, 这个我们在下一节说, 首先要理解什么事状态值以及状态值函数, 他是...
  • php关于变量作为函数名的用法

    千次阅读 2018-11-17 21:40:39
    这是PHP中给图片添加水印的一段代码,当时一直以为那个imagecreatefrom是一个函数,但没有看懂为什么后面是一个{},继而下方又是一个变量加上一个圆括号,括号里面又是一个变量,弄得我摸不着头脑——根本没见过这.....
  • sort函数用法

    万次阅读 多人点赞 2018-04-10 09:30:54
    sort函数是一个非常强大的排序函数用法如下://使用sort函数进行升序排序#include &lt;stdio.h&gt;#include &lt;algorithm&gt;//sort函数所在的函数库using namespace std;//sort所在的标准命名空间...
  • #获取字典 info = {'1':'first','2':'second','3':'third'} number = raw_input('input type you number:') print info.get(number,'error') #实例1 #!/usr/bin/python # -*- coding: UTF-8 -*- # 函数的定义 ...
  • NVL函数用法

    千次阅读 2018-06-12 17:27:00
    Oracle中函数以前介绍的字符串...下面简单介绍一下几个函数用法。在介绍这个之前你必须明白什么是oracle中的空值null1.NVL函数NVL函数的格式如下:NVL(expr1,expr2)含义是:如果oracle第一个参数为空那么显示第二...
  • bool 函数用法

    万次阅读 多人点赞 2018-06-19 23:37:46
    在objective-c中提供了相似的类型BOOL,它具有YES和NO。布尔型变量的只有 真(true)和假(false),可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果...
  • C语言qsort函数用法

    万次阅读 多人点赞 2018-01-28 14:33:59
     排序方法有很种:选择排序,冒泡排序,归并排序,快速排序等。 看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort函数(全称...
  • WaitForSingleObject函数用法

    万次阅读 多人点赞 2019-06-05 11:31:51
     但是,用户模式的线程同步有限制,对于个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。  Windows提供了许多内核对象来实现线程的同步。对于线程同步而言,这些内核对象...
  • memcpy函数用法

    千次阅读 2017-10-22 16:05:42
    1、memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域);...用法:(1)可以拷贝任何类型的对象,因为函数的参数类型是void*(未定义类型指针),也就是说传进去的实参可以
  • Oracle 中 decode 函数用法

    万次阅读 多人点赞 2018-07-23 16:44:43
    Oracle 中 decode 函数用法 含义解释: decode(条件,1,返回值1,2,返回值2,...n,返回值n,缺省) 该函数的含义如下: IF 条件=1 THEN  RETURN(翻译1) ELSIF 条件=2 THEN  RETURN(翻译2)  ...... ...
  • Random函数用法

    万次阅读 多人点赞 2019-09-03 12:25:31
    Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。 二、random模块重要函数 1 )、random() 返回0<=n<1之间的随机实数n; 2 )、...
  • Oracle从中取有的列&NVL函数

    千次阅读 2019-01-17 10:41:46
    ...   Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数。主要有:NVL,NVL2,NULLIF,...下面简单介绍一下几个函数用法。 在介绍这个之前你必须明白什么是oracl...
  • Pandas中loc和iloc函数用法详解(源码+实例)

    万次阅读 多人点赞 2018-08-04 15:55:40
    loc函数:通过行索引 "Index" 中的具体来取行数据(如取"Index"为"A"的行) iloc函数:通过行号来取行数据(如取第二行的数据) 本文给出loc、iloc常见的五种用法,并附上详细代码。 1. 利用loc、iloc提取行...
  • Keras中的分类损失函数用法categorical_crossentropy更python视频教程请到菜鸟教程https://www.piaodoo.com/ from keras.utils.np_utils import to_categorical 注意:当使用categorical_crossentropy...
  • JavaScript函数参数缺省

    千次阅读 2020-01-29 17:33:40
    JavaScript函数参数缺省 本文介绍Es6中如何处理函数的缺省参数。 1. 实参与形参(Argument vs. Parameter) 通常我们不区分实参与形参(Argument vs. Parameter),形参(Parameter)是函数定义时声明的参数,而实参...
  • concat()函数用法

    千次阅读 2019-11-14 11:21:56
    concat函数用法
  • 需求如下:现要根据C列的编号,在A列中找到相等的,并返回与A列编号对应的B列的,写到D列中。 =vlookup(参数1,参数2,参数3,参数4) 参数说明如下: 参数1:要查找的。 参数2:查找范围。(注意:查找...
  • 在没有tuple之前,如果函数需要返回,则必须定义一个结构体,有了C++11,可以基于tuple直接做了,下面是个示例: // 编译:g++ -std=c++11 -g -o x x.cpp #include // tuple头文件 #include #include using...
  • matlab max/min函数用法

    万次阅读 多人点赞 2018-06-04 10:06:58
    求矩阵A的最大函数有3种调用格式,分别是: (1) max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大。 (2) [Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大,U向量记录每列最大...
  • matlab中find函数用法

    万次阅读 多人点赞 2019-03-06 15:10:09
    4.返回最后一个非零的位置find(A,1,‘last’) 例如: 5.返回最后一个非零的行列位置或者A中非零元素位置 例如: 6.[a,b,v] = find(A),找出A中非零元素所在的行和列,分别存储在a和b中,...
  • nvl函数用法

    万次阅读 2015-02-28 13:50:10
    函数的目的是把一个空值(null)转换成一个实际的。其表达式的可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。 对数字型: NVL( comm,0); 对字符型 NVL( TO_CHAR...
  • sorted函数用法

    千次阅读 2018-07-01 12:04:20
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,889,846
精华内容 755,938
关键字:

多值函数的应用