经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » MS SQL Server » 查看文章
MS SQL自定义函数IsPositiveInteger
来源:cnblogs  作者:Insus.NET  时间:2018/11/8 9:42:08  对本文有异议

判断字符串是否为正整数,0开始的的数字不算。

 

  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5.  
  6. CREATE FUNCTION [dbo].[svf_IsPositiveInteger]
  7. (
  8. @string NVARCHAR(MAX)
  9. ) RETURNS BIT --函数返BIT数据类型,是数字返回1,非数字返回0
  10. AS
  11. BEGIN
  12. DECLARE @rtv BIT = 1
  13. DECLARE @str NVARCHAR(MAX) = LTRIM(RTRIM(ISNULL(@string,''))) --去除前后空格,如果为NULL转为''
  14.  
  15. IF ASCII(SUBSTRING(@str, 1, 1)) = 48 --如果字符串第一位为0
  16. BEGIN
  17. SET @rtv = 0 --直接判断为非正整数
  18. END
  19. ELSE
  20. BEGIN
  21. DECLARE @start INT = 1;
  22. DECLARE @end INT = LEN(@str) --获取字符串长度
  23. WHILE (@start <= @end) --循环字符串每一个字符
  24. BEGIN
  25. DECLARE @Numeric VARCHAR(1) = ''
  26. SET @Numeric = SUBSTRING(@str, @start, @start + 1) -- 每循环一次从左边获取一位字符
  27. IF ASCII(@Numeric) >= 48 AND ASCII(@Numeric) <= 57 --如果是数字
  28. BEGIN
  29. SET @start = @start + 1;
  30. CONTINUE --继续循环
  31. END
  32. ELSE
  33. BEGIN
  34. SET @rtv = 0
  35. BREAK --跳出循环
  36. END
  37. END
  38. END
  39. RETURN @rtv
  40. END
Source Code

 

列举例子说明:

  1. 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))
  2. GO
  3.  
  4. INSERT INTO [dbo].[uTstTable] ([col1],[col2],[col3],[col4],[col5],[col6],[col7])
  5. VALUES ('0.65','000435','SF46DG','3800','$54KQ','-0034','-855.4')
  6. GO
  7.  
  8.  
  9. SELECT [dbo].[svf_IsPositiveInteger] ([col1]) AS [col1],
  10. [dbo].[svf_IsPositiveInteger] ([col2]) AS [col2],
  11. [dbo].[svf_IsPositiveInteger] ([col3]) AS [col3],
  12. [dbo].[svf_IsPositiveInteger] ([col4]) AS [col4],
  13. [dbo].[svf_IsPositiveInteger] ([col5]) AS [col5],
  14. [dbo].[svf_IsPositiveInteger] ([col6]) AS [col6],
  15. [dbo].[svf_IsPositiveInteger] ([col7]) AS [col7]
  16. FROM [dbo].[uTstTable]
  17. GO
Source Code

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号