sql="select * from table1 where field1 between '20' and '9'"这样会得到首字母为2 到 9 之间的所有数据,可能不全正确,但可以减少范围
解决方案 »
- 一个联接查询问题
- 剖析SQLSERVER2005的页面结构--表修改的内部处理篇
- 再次提问!在线等
- [版务贴]关于本版2008年7月份Microsoft MVP的提名事宜,及提名名单公示。【注:灌水勿入,否则一律删除】
- SQL SERVER2000 的空间问题,奇怪了!求教!
- sql请教
- 紧急求救:我的sql server开机后怎么也启动不了了?
- 100分寻求恢复数据表,解决问题立即给分。
- 请问SQL数据库的LOG太大了,怎样删除啊(不是选Shrink Database),有什么注意事项?谢谢!
- 如何按某一字段不重复取记录行
- 存储过程中创建的临时表是否存在死锁的问题
- 數據庫TestDB中有很多個表,表owner爲(myowner.*),如何一次將所有的表owner改爲dbo?
where cast(substring
(field1,
patinedx('%[0-9]%',field1),
len(field1)-patinedx('%[0-9]%',field1)-patinedx('%[0-9]%',reverse(field1))+2)
as int)>20
from (select *
from table1
where upper(field1) like '%[^A..Z]%') a
where cast(field1 as int)>20
注意:field1不能有非a-z,A-Z,0-9的字符
yesyesyes()
vinsonshen(猪骨褒咸鱼->味道没得顶) 如果字符串中只有一个连续的整数数字子串,则
where cast(substring
(field1,
patindex('%[0-9]%',field1),
len(field1)-patindex('%[0-9]%',field1)-patindex('%[0-9]%',reverse(field1))+2)
as int)>20--yesyesyes() 有个小笔误 patinedx 写成patinedx
declare @number varchar(1000)
declare @mystring varchar(1000)
select @mystring='sdfaswa34sdfsf25143asdfsdf222asdfa'
set @number=''
while @mystring>''
begin if(left(@mystring,1) like '%[0-9]%')
begin
print left(@mystring,1)
set @number=@number+left(@mystring,1)
end
set @mystring=stuff(@mystring,1,1,'')
end
select cast(@number as bigint)--显示结果
3425143222
create function f_didoleo(
@field1 varchar(8000)
)returns bigint
as
begin
declare @number varchar(1000)
set @number=''
while @field1>''
begin if(left(@field1,1) like '%[0-9]%')
begin
set @number=@number+left(@field1,1)
end
set @field1=stuff(@field1,1,1,'')
end
return(cast(@number as bigint))
end
go--然后调用
select * from table1 where dbo.f_didoleo(field1)>20