标签归档:sql技巧

mssql sqlserver补齐”数据表中位数”的方法分享


摘要:
下文讲述sql脚本补齐位数的方法分享,如下所示:



实现思路:
1.使用replicate快速生成重复数据
2.使用right从右边取相应的位置

例:
将下列的数据全部转换为5位数,如果位数不足时,在左边补零,如下:

create table [maomao365.com]
(keyId int identity,
 info varchar(6)
 )
 go
 ---生成基础数据
 insert into [maomao365.com]
 (info)values(123),(456),
 (789),(12345),(121212),(1222),
 (98765),(234),(8970),(33333) 

 go
  select   keyId,info,
  right(replicate('0',6)+ltrim(info),6)
  as [位数补齐] from [maomao365.com]
 go
 truncate table [maomao365.com]
 drop     table [maomao365.com]
mssql_sqlserver_补齐位数方法_9442

mssql_sqlserver_补齐位数方法_9442

mssql sqlserver sql脚本分页时,获取指定行数的同时,获取符合条件的总数的方法分享


摘要:
下文讲述数据分页时,同时获取符合条件的总数的方法分享,如下所示:
实验环境:sqlserver 2008 R2


实现思路:
使用over开窗函数,并结合row_number对数据进行排序,取出符合条件的行数并计算出符合条件的总行数

例:

  create table [maomao365.com]
    (keyId int identity, info nvarchar(20))
  go
 ---生成基础数据
  insert into   [maomao365.com](info)values
(N'sqlBlog'),(N'sql爱好者'),(N'A'),(N'B'),
(N'c'),(N'd'),(N'e'),(N'f'),(N'g'),(N'h'),
(N'i'),(N'j'),(N'h'),(N'o'),(N'p'),(N'q'),
(N'r'),(N's'),(N't'),(N'u'),(N'v'),(N'w'),
(N'x'),(N'y'),(N'z'),(N'AA'),(N'BB'),(N'CC')
go 
---每页3条数据,获取符合条件的数据中的第三页数据,并返回符合条件的数据行总数
SELECT
    keyId,info,rowCount
FROM
    (SELECT
        ROW_NUMBER() OVER(ORDER BY keyId asc) rowNumber,    
        COUNT(1) OVER() AS [rowCount],
        keyId,info
    FROM   [maomao365.com]  where 1=1 /*检索条件*/
    ) t
WHERE   ---
    t.rowNumber BETWEEN 7 AND 9   --限定返回第三页的数据
go
truncate table [maomao365.com]
drop       table [maomao365.com]

mssql sqlserver 运行sql脚本出现错误信息”the name is not a valid identifier error in function”的处理方法分享


摘要:
下文讲述一次动态执行sql脚本,出现以上错误信息的处理方法,如下所示:
实验环境:sql server 2008 R2

今天存储过程动态拼接跨服务器查询数据,出现错误信息:
the name is not a valid identifier error in function

百思不得其解,最后将sql脚本打印出来,放入查询分析器中,才发现数据库名称是一个sql关键字,所以出现以上错误信息,最后我们采用中括号将关键字括起,问题得到完美解决。

     
      declare @sqlInfo nvarchar(2000)
    declare @databaseName  nvarchar(100)
      set @databaseName ='select'   
    SET @sqlInfo = ' select info from [' + @databaseName+ '].dbo.[maomao365.com]  where keyId=1 ' 
     
     print (@sqlInfo)
     exec  (@sqlInfo)