获取包含数字的所有记录

时间:2009-11-27 10:36:25

标签: sql sql-server

可以编写一个查询从某个表中获取所有该记录,其中某个字段包含一个数值吗?

类似于“从街道选择街道,其中街道像'%0%'或街道像'%1%'等等”

只有一个功能?

5 个答案:

答案 0 :(得分:13)

试试这个

declare @t table(street varchar(50))
insert into @t 
    select 'this address is 45/5, Some Road' union all
    select 'this address is only text'

select street from @t
where street like '%[0-9]%'

街景

this address is 45/5, Some Road

答案 1 :(得分:6)

是的,但是在模式的前沿有一个通配符,效率很低,而且可能很慢

LIKE '%[0-9]%'

答案 2 :(得分:1)

在列中搜索文本非常低效,并且不能很好地扩展(每行功能,通常都有这个问题)。

你应该做的是通过创建一个新列hasNumerics来交换磁盘空间(这是便宜的)以获得性能(从不便宜),添加索引到然后使用插入/更新触发器根据进入实际列的数据进行设置。

这意味着在创建或修改行时计算仅 ,而不是每次 提取数据。数据库几乎始终读取的次数远远超过它们的编写时间,使用此解决方案可以分摊许多select语句执行的计算成本。

然后,当您需要数据时,只需使用:

select * from mytable where hasNumerics = 1; -- or true or ...

并观看它会留下正则表达式查询或like '%...%'怪物。

答案 3 :(得分:1)

要获取仅包含数字的行,请使用此查询

select street 
from tbladdress 
where upper(street) = lower(street)

在oracle中工作。

答案 4 :(得分:0)

我发现这个解决方案“选择街道从tbladresse与(nolock)patindex('%[0-9]%',街道)= 1”

我花了2分钟在一个没有索引的字段上搜索300万