sqlserver判断字符串是否是数字

sql2005有个函数ISNUMERIC(expression)函数:当expression为数字时,返回1,否则返回0。这只是一个菜鸟级的解决办法,大多数情况比较奏效。

eg:

select ISNUMERIC(‘123‘) --结果为1

但是,该函数有个缺点!

eg:

 SELECT
 ,ISNUMERIC(‘-‘) as ‘-‘    --1
 ,ISNUMERIC(‘+‘) as ‘+‘    --1
 ,ISNUMERIC(‘$‘) as ‘$‘    --1
 ,ISNUMERIC(‘.‘) as ‘.‘    --1
 ,ISNUMERIC(‘,‘) as ‘,‘    --1
 ,ISNUMERIC(‘\‘) as ‘\‘    --1
 ,ISNUMERIC(‘2D3‘) AS ‘2D3‘--1
,ISNUMERIC(‘1d1‘) AS ‘1d1‘--1
,ISNUMERIC(‘1e1‘) AS ‘1e1‘--1
,ISNUMERIC(‘d‘) AS ‘d‘   --0

当含有美元符、加减号、逗号等符号时,或者D、E的前后均出现数字时,也会返回1,这就比较头疼了。标点符号倒是好理解,为什么d,e这种情况,真是不理解微软设计的意图。

有什么好的解决办法吗?当然了,请看下面

方法:通配符。高逼格使用。

适用场景:2005及以上(2005之前的版本没试过,应该也支持)

 --返回0-则为纯数字(支持正负数,小数点)
 SELECT PATINDEX(‘%[^0-9|.|-|+]%‘,‘2.2‘)--返回0

 --返回0-则为纯整数
select PATINDEX(‘%[^0-9]%‘, ‘2.2‘)--返回非0
时间: 2024-12-19 22:26:42

sqlserver判断字符串是否是数字的相关文章

字符串--java中判断字符串是否为数字的方法的几种方法?

ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.u

C语言判断字符串是否为数字

判断一个字符串是否为数字, 听起来很简单,实现还是有点难度的. 最近写了一个,如下: #define IS_BLANK(c) ((c) == ' ' || (c) == '\t') #define IS_DIGIT(c) ((c) >= '0' && (c) <= '9') #define IS_ALPHA(c) ( ((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= '

java python oracle判断字符串是否为数字的函数

java public boolean isNumeric(String str){ Pattern pattern = Pattern.compile("^-?[0-9]+\\.?[0-9]+"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ){ return false; } return true; } python def isNum(value): try: int(value) + 1 except

判断字符串是否为数字格式

import java.util.Scanner; /*判断字符串是否是数字格式*/ public class CheckNum {    public static void main(String args[]){    Scanner scanner = new Scanner(System.in);    System.out.println("请输入要验证的字符串:");    String str = scanner.next();    char c[] = str.to

Linux C判断字符串是否为数字

Title:Linux C判断字符串是否为数字  --2013-10-14 15:54 #include <ctype.h> #include <string.h> int IsInt(char* str) { int len; len = strlen(str); int i=0; for(i;i<len;i++) { if(!(isdigit(str[i]))) return 0; } return 1; }

C#判断字符串是否是数字

1 /// <summary> 2 /// 判断字符串是否是数字 3 /// </summary> 4 public static bool IsNumber(string s) 5 { 6 if (string.IsNullOrWhiteSpace(s)) return false; 7 const string pattern = "^[0-9]*$"; 8 Regex rx = new Regex(pattern); 9 return rx.IsMatch

java中判断字符串是否为数字的方法的几种方法

Java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.

判断字符串string是数字、json结构、xml结构

import org.json.JSONException; import org.json.JSONObject; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; public class StringTest { /** * @param args */ public static void main(String[] args) { String string1 = "123"; Strin

判断字符串全为数字

1 判断字符串全为数字 1.1 直接调用 isNumeric 方法 1.1.1 引入commons依赖包 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency>   1.1.2 通过  StringUtils类 调用