zoukankan      html  css  js  c++  java
  • sql server函数(isnull,charindex,cast,自定义函数)

    SELECT
    charindex(
    CAST (
    dbo.ufn_IsNullOrEmpty ('109722A3-622D-4FD4-A060-0287C933A89E', a.OUID) AS VARCHAR (8000)
    ),
    a.OUID
    ),
    IsNull(dbo.uf_GetOUName(OUID), '') + IsNull(b.RoleName, '') __Keyword,
    dbo.uf_GetOUName (OUID) OUName,
    B.RoleName,
    B.Remark,
    b.roleid,
    a.ouid
    FROM
    tbl_base_OURole a
    RIGHT JOIN tbl_base_Role b ON a.RoleID = B.RoleID
    WHERE
    charindex(
    CAST (
    dbo.ufn_IsNullOrEmpty (
    '109722A3-622D-4FD4-A060-0287C933A89E',
    IsNull(
    a.OUID,
    '00000000-0000-0000-0000-000000000001'
    )
    ) AS VARCHAR (8000)
    ),
    IsNull(
    a.OUID,
    '00000000-0000-0000-0000-000000000001'
    )
    ) > 0

    1.

    ISNULL

    使用指定的替换值替换 NULL。

    语法
    ISNULL ( check_expression , replacement_value )

    参数
    check_expression

    将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。

    replacement_value

    在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。

    返回类型
    返回与 check_expression 相同的类型。

    2.

    语法:


    CAST (expression AS data_type)


    参数说明:


    expression:任何有效的SQServer表达式。


    AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。


    data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。

    使用CAST函数进行数据类型转换时,在下列情况下能够被接受:


    (1)两个表达式的数据类型完全相同。
    (2)两个表达式可隐性转换。
    (3)必须显式转换数据类型。


    如果试图进行不可能的转换(例如,将含有字母的 char 表达式转换为 int 类型),SQServer 将显示一条错误信息。


    如果转换时没有指定数据类型的长度,则SQServer自动提供长度为30。

    二、注意事项:

    (1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串'12'转换为整型:

    SELECT CAST('12' AS int)

    (2).返回值是整型值12。如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?

    SELECT CAST('12.5' AS int)

    (3).CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于12.5不能用int数据类型来表示,所以对这个函数调用将产生一个错误:

    Server: Msg 245, Level 16, State 1, Line 1

    Syntax error converting the varchar value

        '12.5' to a column of data type int.

    (4).要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为decimal类型,需要首先定义decimal值的精度与小数位数。在本例中,精度与小数位数分别为9 与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。

    SELECT CAST('12.5' AS decimal(9,2))

    decimal数据类型在结果网格中将显示有效小数位: 12.50

    (5).精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server将截断数字的小数部分,而不会产生错误。

    SELECT CAST('12.5' AS decimal)

        结果是一个整数值:12

    3.CHARINDEX函数的使用

    SQL中的函数种类非常多,下面为您介绍的是SQL CHARINDEX函数,希望对您更好地学习SQL函数的使用能够有所帮助。

    SQL CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:

    CHARINDEX ( expression1 , expression2 [ , start_location ] )

    Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

    SQL CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如SQL CHARINDEX函数没有找到要找的字符串,那么函数整数“0”。让我们看看下面的函数命令执行的结果:

    CHARINDEX('SQL', 'Microsoft SQL Server')

    这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。

    接下来,我们看这个CHARINDEX命令:

    CHARINDEX('7.0', 'Microsoft SQL Server 2000')

    在这个例子中,CHARINDEX返回零,因为字符串“7.0” 不能在“Microsoft SQL Server”中被找到。接下来通过两个例子来看看如何使用CHARINDEX函数来解决实际的T-SQL问题。

    4.

    ALTER function ufn_IsNullOrEmpty(@expression sql_variant, @Replace sql_variant)
    returns sql_variant
    as
    begin
    if( @expression = '' or @expression is null)
    return @Replace
    return @expression
    end

    5.

    ALTER FUNCTION [dbo].[uf_GetOUName] (
    @OUID as uniqueidentifier
    ) RETURNS varchar(200)
    AS
    BEGIN
    DECLARE @Ret varchar(200)

    SELECT @Ret =OUName
    FROM VW_allou
    WHERE OUID = @OUID

    RETURN @Ret

    END

  • 相关阅读:
    RabbitMQ
    连接池,为什么要使用连接池?
    mac 安装arcanist
    感触
    UDP socket
    Servlet过滤器
    PL、SQL
    springmvc 文件上传实现(不是服务器的)
    注解spring
    excel工具类
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/6991699.html
Copyright © 2011-2022 走看看