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
学习了
相似回答