MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerable<T>数据源
MS SQL自定义函数IsPositiveInteger
判断字符串是否为正整数,0开始的的数字不算。


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[svf_IsPositiveInteger]
(
@string NVARCHAR(MAX)
) RETURNS BIT --函数返BIT数据类型,是数字返回1,非数字返回0。
AS
BEGIN
DECLARE @rtv BIT = 1
DECLARE @str NVARCHAR(MAX) = LTRIM(RTRIM(ISNULL(@string,''))) --去除前后空格,如果为NULL转为''
IF ASCII(SUBSTRING(@str, 1, 1)) = 48 --如果字符串第一位为0
BEGIN
SET @rtv = 0 --直接判断为非正整数
END
ELSE
BEGIN
DECLARE @start INT = 1;
DECLARE @end INT = LEN(@str) --获取字符串长度
WHILE (@start <= @end) --循环字符串每一个字符
BEGIN
DECLARE @Numeric VARCHAR(1) = ''
SET @Numeric = SUBSTRING(@str, @start, @start + 1) -- 每循环一次从左边获取一位字符
IF ASCII(@Numeric) >= 48 AND ASCII(@Numeric) <= 57 --如果是数字
BEGIN
SET @start = @start + 1;
CONTINUE --继续循环
END
ELSE
BEGIN
SET @rtv = 0
BREAK --跳出循环
END
END
END
RETURN @rtv
END

列举例子说明:


CREATE TABLE [dbo].[uTstTable] ([col1] NVARCHAR(20),[col2] NVARCHAR(20),[col3] NVARCHAR(20),[col4] NVARCHAR(20),[col5] NVARCHAR(20),[col6] NVARCHAR(20),[col7] NVARCHAR(20))
GO
INSERT INTO [dbo].[uTstTable] ([col1],[col2],[col3],[col4],[col5],[col6],[col7])
VALUES ('0.65','000435','SF46DG','3800','$54KQ','-0034','-855.4')
GO
SELECT [dbo].[svf_IsPositiveInteger] ([col1]) AS [col1],
[dbo].[svf_IsPositiveInteger] ([col2]) AS [col2],
[dbo].[svf_IsPositiveInteger] ([col3]) AS [col3],
[dbo].[svf_IsPositiveInteger] ([col4]) AS [col4],
[dbo].[svf_IsPositiveInteger] ([col5]) AS [col5],
[dbo].[svf_IsPositiveInteger] ([col6]) AS [col6],
[dbo].[svf_IsPositiveInteger] ([col7]) AS [col7]
FROM [dbo].[uTstTable]
GO

MS SQL自定义函数IsNumeric
判断字符串是否为纯数字,负数不算。如'00012','54585','1000'


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[svf_IsNumeric]
(
@string NVARCHAR(MAX)
) RETURNS BIT --函数返BIT数据类型,是数字返回1,非数字返回0。
AS
BEGIN
DECLARE @rtv BIT = 1
DECLARE @str NVARCHAR(MAX) = LTRIM(RTRIM(ISNULL(@string,''))) --去除前后空格,如果为NULL转为''
DECLARE @start INT = 1;
DECLARE @end INT = LEN(@str) --获取字符串长度
WHILE (@start <= @end) --循环字符串每一个字符
BEGIN
DECLARE @Numeric VARCHAR(1) = ''
SET @Numeric = SUBSTRING(@str, @start, @start + 1) -- 每循环一次,从左边获取一位字符
IF ASCII(@Numeric) >= 48 AND ASCII(@Numeric) <= 57 --如果是数字
BEGIN
SET @start = @start + 1;
CONTINUE --继续循环
END
ELSE
BEGIN
SET @rtv = 0
BREAK --跳出循环
END
END
RETURN @rtv
END

创建一个例子来演示:


CREATE TABLE [dbo].[uTable] ([col1] NVARCHAR(20),[col2] NVARCHAR(20),[col3] NVARCHAR(20),[col4] NVARCHAR(20),[col5] NVARCHAR(20),[col6] NVARCHAR(20),[col7] NVARCHAR(20))
GO
INSERT INTO [dbo].[uTable] ([col1],[col2],[col3],[col4],[col5],[col6],[col7])
VALUES ('0.455','000435','SF46DG','4000','$%9KJ','-0034','-8554')
GO
SELECT [dbo].[svf_IsNumeric] ([col1]) AS [col1],
[dbo].[svf_IsNumeric] ([col2]) AS [col2],
[dbo].[svf_IsNumeric] ([col3]) AS [col3],
[dbo].[svf_IsNumeric] ([col4]) AS [col4],
[dbo].[svf_IsNumeric] ([col5]) AS [col5],
[dbo].[svf_IsNumeric] ([col6]) AS [col6],
[dbo].[svf_IsNumeric] ([col7]) AS [col7]
FROM [dbo].[uTable]
GO

水晶报表使用IEnumerable<T>数据源
这篇我们学习水晶报表,报表呈现的数据源是IEnumerable<T>。比如下面的数据:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Insus.NET.Models;
namespace Insus.NET.Entities
{
public class MachineEntity
{
public IEnumerable<Machine> Machines()
{
return new List<Machine>()
{
{ new Machine() {
Key =1,
ModelNumber ="TC03Q",
Brand ="QT",
ManufactureDate = Convert.ToDateTime("2008/12/31")}
},
{ new Machine() {
Key =2,
ModelNumber ="MH26U",
Brand ="HW",
ManufactureDate = Convert.ToDateTime("2012/03/09")}
},
{ new Machine() {
Key =3,
ModelNumber ="DW569",
Brand ="XM",
ManufactureDate = Convert.ToDateTime("2015/07/25")}
}
};
}
}
}

新建水晶报表:





按Next铵钮,略过Group By。
铵Next铵钮,略过Filter Fields。

报表创建OK。

根据这篇《ASP.NET MVC项目实现BasePage基类用作ASPX.CS网页继承》https://www.cnblogs.com/insus/p/9865023.html
我们还得在BasePage基类中,重载另一个方法:
在.aspx.cs网页中,就可以使用上面的方法:

程序运行:

学习完毕。
希望对你有所帮助。
MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerable<T>数据源的更多相关文章
- SQL Server编程(02)自定义函数
在编程过程中,我们通常把特定的功能语句块封装称函数,方便代码的重用.我们可以在SQL Server中自定义函数,根据函数返回值的区别,我们自定义的函数分两种:标量值函数和表值函数. 自定义函数的优点: ...
- SQL Server如何定位自定义标量函数被那个SQL调用次数最多浅析
前阵子遇到一个很是棘手的问题,监控系统DPA发现某个自定义标量函数被调用的次数非常高,高到一个离谱的程度.然后在Troubleshooting这个问题的时候,确实遇到了一些问题让我很是纠结,下文是解决 ...
- mysql、MS SQL关于分页的sql查询语句 limit 和row_number() OVER函数
在做项目的时候需要些分页,用的数据库是MySQL,之前看到的参考例子是用MS SQL做的,在MS SQL.Oracle里面有ROW_NUMBER() OVER函数可以在数据库里对数据进行分组.百度后的 ...
- 自定义函数导致的sql性能问题
同事说,某某报表跑的很慢,让我调查一下 优化前:该报表整体需要跑4小时以上. sql代码如下 SELECT /*省略多数查询字段*/ REP_FUN_REFCODEVALUE /*自定义函数*/ (P ...
- 自定义函数动态执行SQL语句
Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immediate,建议使用后者. DDL 和 DML Sql代码 收藏代码 /*** DDL ***/ begin EX ...
- sql server函数(isnull,charindex,cast,自定义函数)
SELECT charindex( CAST ( dbo.ufn_IsNullOrEmpty ('109722A3-622D-4FD4-A060-0287C933A89E', a.OUID) AS V ...
- mybatis自定义插件动态修改sql语句
step1:定义Interceptor实现org.apache.ibatis.plugin.Interceptor import org.apache.commons.logging.Log; imp ...
- MS SQL Server迁移至Azure SQL(官方工具)
前面,我有尝试过将MS SQL Server数据数据迁移至Azure SQL,请参考<MS SQL Server迁移至Azure SQL>,使用的是第三方工具,但现在官方更新了工具,我们尝 ...
- SQL关于分页的sql查询语句 limit 和row_number() OVER函数
在做项目的时候需要些分页,用的数据库是mysql,之前看到的参考例子是用MS SQL做的,在MS SQL.ORACLE里面有ROW_NUMBER() OVER函数可以在数据库里对数据进行分组.百度后的 ...
随机推荐
- perf 函数调用性能(函数流程图)
perf record -g -p pid perf record -g -t tid perf report -g fractal,0.2,caller perf report -g fractal ...
- Replace Pioneer 试用推广
Replace Pioneer: http://www.mind-pioneer.com 目前合法长期使用Replace Pioneer的唯一方法(除了购买之外): Replace Pioneer过期 ...
- MySQL create table as与create table like对比
a.create table like方式会完整地克隆表结构,但不会插入数据,需要单独使用insert into或load data方式加载数据b.create table as 方式会部分克隆表结 ...
- HBase系统架构及数据结构(转)
原文链接:Hbase系统架构及数据结构 HBase中的表一般有这样的特点: 1 大:一个表可以有上亿行,上百万列 2 面向列:面向列(族)的存储和权限控制,列(族)独立检索. 3 稀疏:对于为空(nu ...
- Android宝典入门篇-进阶
学习Android前后有快有1个月了,本着不耍流氓,谈恋爱就要结婚的信念(其实AD开发也挺有趣的),做了自己的第一个Android小应用.本来准备今天和大家分享的,考虑到在不同屏幕上的效果没测试和本着 ...
- FMX解析BMP文件工厂
unit FMX.Canvas.D2D; initialization TTextLayoutManager.RegisterTextLayout(TTextLayoutD2D, TCanvasD2 ...
- 在上已个Java Spring MVC项目基础上加MyBatis
代码目录: /Users/baidu/Documents/Data/Work/Code/Self/HelloSpringMVC 1. 首先在resource目录加上jdbc.properties: d ...
- STM32+IAP方案 实现网络升级应用固件
关注了这个概念有些日子了,这段时间总算有机会实战==网络升级应用固件,这里记录下遇到的问题,及解决方案. 原理与网上流传的串口作为传输手段 一致:不同之处,无非我这里使用了网络设备传输.==(lwip ...
- C#对.zip 存档读取和写入【转】
Framework4.5支持 引用: System.IO.Compression.dll,System.IO.Compression.FileSystem.dll 提取压缩文件 ZipFile.Ext ...
- (转)Apache的安装与配置
转自:http://www.dreamdu.com/webbuild/apache/ 5.2. Apache的安装与配置 5.2.1. Apache安装与配置视频教程 下面将介绍如何在WinXP下安装 ...