总结最近遇到的SQL Server的一些问题

1. sql server 如何输出超长字符串。解决Print不全问题

SELECT @SQL FOR XML PATH(’’)

双击之后可呈现超长字符串

https://blog.csdn.net/qq_33391499/article/details/85799028

2. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

declare @sql nvarchar(2000)
declare @cou int
declare @id varchar(20)
set @id='1'
set @sql='select @count=count(*) from emp where id=@id'
exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out
,@id
print @cou

https://blog.csdn.net/hisense20112784/article/details/72884516/

exec (@sql)  ---无法传入传出参数

3. SQL语句拼接时,使用函数quotename给变量加上双引号

SET @unionsql = 'SELECT APP_ID as appId,' + quotename(@tname, '''') +
                        ' AS object,COUNT(distinct BATCH_NB) AS batch#, COUNT(1) AS row#, MIN(ADD_DATE) AS MinDATE, MAX(ADD_DATE) AS MaxDATE FROM '
                        + @tname + ' WHERE APP_ID = ' + quotename(@APP_ID, '''') + ' GROUP BY APP_ID';

用两个单引号给拼接SQL

SET @transactionsql = 'select APP_ID, COUNT(1) ERR from TableName where STATUS=''ERR'' and APP_ID=' +
                        quotename(@APP_ID, '''') + 'group by APP_ID for json path'

4. 产生json数据

'select * from (' + @unionsql + ') t for json path'    产生的json最外面带[];

'select * from (' + @unionsql + ') t without_array_wrapper'  产生的json最外面不带[];

5. 存储字符串

Microsoft SQL Server 2005 中引入了 max 说明符。此说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力。varchar(max)、nvarchar(max) 和 varbinary(max) 统称为大值数据类型。您可以使用大值数据类型来存储最大为 2^31-1 个字节的数据。

DECLARE @unionsql NVARCHAR(MAX) = '';  len(@unionsql) = 0

DECLARE @unionsql NVARCHAR(MAX) ;  //len(@unionsql) != 0

6. 游标的使用

DECLARE cr CURSOR FOR CURSOR LOCAL FORWARD_ONLY FAST_FORWARD READ_ONLY FOR
        SELECT DISTINCT (MAPPING_TABLE) AS tname
        FROM TableName
        WHERE charindex('.', MAPPING_TABLE) > 0

OPEN cr
FETCH NEXT FROM cr INTO @tname
WHILE (@@FETCH_STATUS = 0)
  BEGIN
    PRING @tname
    FETCH NEXT FROM cr INTO @tname
  END
CLOSE cr
DEALLOCATE cr

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值