• sql 几个常用函数


    ROUND 用法:

    --15.000 表示小数点第一位取四舍五入,将原小数点后的位数都设置为0
    SELECT ROUND(15.258,0)

    --15.300,第二个参数如果是1,则取原值小数点后第一位的四舍五入法,小数点第一位之后的参数用0代替
    SELECT ROUND(15.258,1)

    space用法:

    space()是SQL的函数: 返回一个字符串,其中包含N个空格字符。

    --
    例: select space(3);返回0个空格字符。

    可以使用len(space(3));获取的长度为0

    例如:

     select replace(space(10 - LEN(convert(nvarchar(30), 114))), space(1), '0')

    获取的长度为7,以第二个参数的长度为一个单位进行分割,例如是1,就是分7个单位,每个为0;结果:0000000

    如果是2,则最多可分为3个单位,则结果为000

    如果是3,则最多分为2个单位,结果为00

    如果为4,5,6,7,则最多可分为1个单位,结果就是0

    --2
    SELECT charINDEX('bce','abcd')

    -- 2
    SELECT PATINDEX('%bce%','abcd')
    --bcd
    SELECT x = SUBSTRING('abcdef', 2, 3)

    --字符串类型的10
    SELECT CAST(10 AS nvarchar(MAX))

    ---abxxxfghixxx
    SELECT REPLACE('abcdefghicde','cde','xxx')

    set @vendorName=REPLACE(@vendorName,'''','''''')

    --07/04/2016 (一般在时间格式和字符串格式之间相互转换)
    SELECT CONVERT(varchar(30),getdate(),101) now

     当然也可以:

     select  convert(nvarchar(30), g.Id)

    --

    ISNULL(@user, '0')

    该字段如果存在null,则转为字符串类型:"0"

    --开启

    可以在存储过程设置这个参数:

    --一个是否成功的标记

    @adjustResult INT = NULL OUTPUT --结果:1:成功,0失败


    SET QUOTED_IDENTIFIER ON

    添加异常捕捉和事务处理

    BEGIN TRY

    BEGIN TRANSACTION

    --todo 业务

    --比如

    SELECT @oldStockQuantity = StockQuantity, @allowPreOrder = AllowPreOrder, @preOrderStockQuantity = PreOrderStockQuantity
    FROM dbo.User WITH(UPDLOCK) WHERE Id = @Id

    SET @newStockQuantity = @oldStockQuantity + @quantityToChange

    IF @allowPreOrder = 0 AND @newStockQuantity < 0
    SELECT 0;
    ELSE IF @allowPreOrder = 1 AND @newStockQuantity < (-1) * @preOrderStockQuantity
    SELECT 0;;
    ELSE
    BEGIN
    UPDATE dbo.Goods
    SET StockQuantity = @newStockQuantity
    WHERE Id = @goodsId

    SELECT 1
    END

    COMMIT TRANSACTION

    END TRY

    BEGIN CATCH
    IF @@TRANCOUNT > 0 or xact_state() <>0
    ROLLBACK TRANSACTION ;
    DECLARE @ExtErrMsg NVARCHAR(4000)
    DECLARE @ERROR_MESSAGE NVARCHAR(4000) = ERROR_MESSAGE()
    DECLARE @ERROR_SEVERITY INT = ERROR_SEVERITY()
    DECLARE @ERROR_STATE INT = ERROR_STATE()
    DECLARE @ERROR_PROCEDURE NVARCHAR(4000) = ERROR_PROCEDURE()
    DECLARE @ERROR_LINE INT = ERROR_LINE()
    DECLARE @ERROR_NUMBER INT = ERROR_NUMBER()
    IF @ERROR_PROCEDURE IS NULL SET @ERROR_PROCEDURE = ISNULL(OBJECT_NAME(@@PROCID), 'nul')
    SET @ExtErrMsg = ISNULL(@ERROR_PROCEDURE, 'nul') + ':'+ CONVERT(NVARCHAR(10), @ERROR_LINE) + ':' + @ERROR_MESSAGE
    --EXEC WriteLogMessage @@PROCID, @@NESTLEVEL, '', @ERROR_LINE, @ERROR_MESSAGE, @ERROR_NUMBER, @ERROR_PROCEDURE, @ERROR_SEVERITY,@ERROR_STATE;
    RAISERROR ( @ExtErrMsg, @ERROR_SEVERITY, @ERROR_STATE ) WITH LOG ;
    RETURN '' ;
    END CATCH

    --关闭

    SET QUOTED_IDENTIFIER OFF

  • 相关阅读:
    nacos安装配置和部署教程
    springcloudstream整合rabbitmq
    Springboot整合swagger2
    git命令详解
    Mybatis 注解开发传入List 两种方式接收方式 在IN场景中
    java 根据时间段查询数据库
    stream分页
    201521123068《Java程序设计》第1周学习总结
    201521123027 《JAVA程序设计》第二周学习总结
    201521123027 《JAVA程序设计》第一周学习总结
  • 原文地址:https://www.cnblogs.com/niuzaihenmang/p/5640163.html
Copyright © 2020-2023  润新知