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函数可以在数据库里对数据进行分组.百度后的 ...
随机推荐
- javascript:window.history.forward(1);
javascript:window.history.forward(1);[转] 接下来我们要讨论的方法以后退按钮本身为中心,而不是浏览器缓存.这儿有一篇文章Rewiring the Back But ...
- 通过手机音频口,实现与单片机通讯,做电子签名成功n
手机端的Ukey便携产品, 可以管理证书.加密解密.电子签名 : 1.通讯稳定,生成签名成功率100% 2.证书固化,私钥安全 3.走手机音频接口,通用.跨平台 4.耗电少,自带电池可长期供电,且可充 ...
- 让ios项目同时支持ARC和非ARC
ttp://code4app.com/snippets/one/禁止某几个文件用ARC模式编译/502344256803fa246d000000#s0 如果你的绝大部分代码需要ARC,那么就设置项目支 ...
- 判断openfire用户的状态
/** * 判断openfire用户的状态 * 说明 :必须要 openfire加载 presence 插件,同时设置任何人都可以访问 * /status?jid=user1@my.openfire. ...
- MyEclipse for Linux版下载
最近看到很多网友都在找MyEclipse for Linux版下载,费了很大劲也没有找到.1.建议通过代理到官方网站下载. 2.用迅雷下载.设置迅雷使用代理下载(我用的就是这种方式). MyEclip ...
- 电子书mobi的格式详解
https://wiki.mobileread.com/wiki/MOBI#Format Like PalmDOC, the Mobipocket file format is that of a s ...
- c# 使用api函数 ShowWindowAsync 控制窗体
1.需要匯入 System.Runtime.InteropServices 命名空間 2.宣告 ShowWindowAsync 函數 [DllImport("user32.dll" ...
- PHP实现链表
看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下. 简短不割 ...
- Cognos权限认证CJP方式之用户密码加密
在项目开发过程中,用户往往对系统的安全都有明确的要求,下面针对cognos门户认证用户密码如何加密来提供一个简单的wf 1Cognos权限认证方式:CJP 2Cognos用户数据库类型:Oracle ...
- 在weka中添加libSVM或者HMM等新算法
转:http://kasy-13.blog.163.com/blog/static/8214691420143226365887/ Weka的全名是怀卡托智能分析环境(Waikato Environm ...