sql怎么截取一个字符串中的数字,然后和另一个数进行比较。

如字符串:“玉集建(1992)字第051601074号”中要截取括号中的数字——1992,并用1992和2009比较,小于的话就查询该记录。

select substring(colName,charindex('(',colName)+1,4)
把1992拿出来,对比也就用这个计算方法对比吧,如
where convert(int,substring(colName,charindex('(',colName)+1,4))<2009
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-25
不知道你是什么数据库.
如果是 Oracle 的话, 相当省事
用 正则表达式函数-REGEXP_SUBSTR 就可以解决了。
http://hi.baidu.com/wangzhiqing999/blog/item/625958917f5b5158d1135eff.html

但是如果是 SQL Server 数据库的话, 就稍微麻烦一些了。
要首先用 PATINDEX 找到一个数字的位置。
SELECT PATINDEX('%[0-9]%', '玉集建(1992)字第051601074号')
如果长度固定为4的话, 还好办。直接 SUBSTRING 来处理就好

1> SELECT
2> SUBSTRING( '玉集建(1992)字第051601074号',
3> PATINDEX('%[0-9]%', '玉集建(1992)字第051601074号'),
4> 4);
5> go

--------
1992

(1 行受影响)

如果数字长度不确定的话, 恐怕就麻烦了。
第2个回答  2011-07-25
select * from 表 where substring('玉集建(1992)字第051601074号',charindex('(','玉集建(1992)字第051601074号')+1,4)<'2009'

'玉集建(1992)字第051601074号' 用相应的栏位名替换就可以了
第3个回答  2011-07-25
String Str="玉集建(1992)字第051601074号"
int a = Str.Length;
int b = Str.IndexOf("(");
int c = Str.IndexOf(")");
string StrYear= Str.Substring(b+1,c-b-1);
第4个回答  2011-07-25
学习了

sql怎么截取一个字符串中的数字,然后和另一个数进行比较。
select substring(colName,charindex('(',colName)+1,4)把1992拿出来,对比也就用这个计算方法对比吧,如 where convert(int,substring(colName,charindex('(',colName)+1,4))<2009

用SQL语句截取字符串!并比较大小!!
select substring(日期,5,2) from 表名 取出来的那个就是你说的06和07了,然后再比较

在SQL语句中如何将字符串分割后再与另一个字符串链接
union all select A||substr(B,4,1) from tab where length(B)>=4

sql 中 如何截取一个字段的某部分并同时与某一数值比较大小?
SUBSTRING ( expression , start , length )参数 expression 是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。start 是一个整数,指定子串的开始位置。length 是一个整数,指定子串的长度(要返回的字符数或字节数)。说明 由于在 t...

MySQL数据库的一个表截取字符串然后去找另一张表的字段匹配怎么写...
截取文本 mysql中怎么从数组中取随机的文本,参考substring_index函数。分为两步走,第一步先去倒数开始往前数倒数几位,第二步再从新的数组中取第一位。substring_index(substring_index(array, '符合间隔', -n), '符合间隔', 1)构造随机因子 现在再看看这个随机因子怎么取,参考rand()函数。因为...

如何在SQL数据库中截取字符串并且比较。
CODE VARCHAR(8),NAME VARCHAR(8));CREATE TABLE #商品浏览记录(CODE VARCHAR(8),NAME VARCHAR(8));INSERT INTO #商品信息 SELECT '00010001', '可乐' UNION ALL SELECT '00010002', '汽水' UNION ALL SELECT '00010003', '啤酒' UNION ALL SELECT '00020001', '牙刷' UNION ALL SELECT '...

oracle中 sql截取某个字符前面和后面的值
1、将新建好的表aaaa,填充需要查询的数据以"_"或者","为分隔符的两条数据。2、先挑ID为1的数据进行截取查询演示。3、如果已知截取字符的长度和特殊字符位置,就可以用substring()函数来从字符串的开始位置,截取到特殊字符出现的位置。4、使用charindex()函数来返回特殊字符出现的位置,查询结果及语句...

SQL-截取字符串函数
在SQL中,处理字符串操作是常见的任务,尤其是在数据库设计和数据提取时。有三种常用的函数用于截取字符串,分别是left、right以及substring。1. left函数:该函数用于从字符串的左侧开始,截取指定长度的字符。其语法为:left(string, length)。例如,如果有一个字符串为 'HelloWorld',使用left('...

sql 如何截取一个字段里某一字符串中间的字符?
create table #a (string varchar(max))declare @sql varchar(max)declare @a varchar(max)select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--这个是要查询的字符串 ---查询qwer后面的字符串--- while charindex('qwer',@a)<>0 begin select @a=SUBSTRING ( @a,charind...

sqlserver中如何进行截取字符串然后再计算?
(1)instr(replace(t.number,'m',''),'*',1) 从100*200的第1位截取到 '*' 的长度,注:这时是长度,不是数字100 substr(num,1,instr(replace(t.number,'m',''),'*',1)-1) 从第一位截取到'*'之前,即取出100 (2)instr(replace(t.number,'m',''),'*',-1) 从100*...

相似回答