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
最新文章
- python脚本实现scp上传下载功能
- JMeter学习(十七)JMeter测试Java
- Oracle参数化查询
- 【转】copy 和 mutablecopy (深拷贝和浅拷贝)
- SVN linux端配置
- 给ie浏览器添加推荐浏览器提示
- java--偏向锁
- node c++多线程插件 第二天 c++指针
- mysql5.6 rpm安装配置
- UPDATE/INSERT用法研究
- Flume1.9.0的安装、部署、简单应用(含分布式、与Hadoop3.1.2、Hbase1.4.9的案例)
- Docker安装rabbitmq
- 使用 JSON-lib 出现异常 java.lang.reflect.InvocationTargetException
- springboot-32-使用mvc测试
- Jmeter(二十二)_脚本上传Gitlab
- vue父组件向子组件动态传值的两种方法
- 06 数据库入门学习-视图、sql注入、事务、存储过程
- Tomact8部署在linux下启动很慢详解
- 用canvas播放scratch文件
- STL源码剖析(仿函数/bind2nd)