按数值搜索

时间:2011-02-27 04:22:16

标签: sql sql-server sql-server-2005

使用Sql Server 2005

表1

ID Value

ABC001
BCE002
...

我有搜索栏,当我搜索像这个“001”的ID时它显示为空,当我搜索“ABC001”时它会显示值。

查询

Select * from table where id = '" & txtid & "'

txtid = textbox

我只想搜索ID中的数值。

如何为数字搜索编写查询。

需要查询帮助

4 个答案:

答案 0 :(得分:3)

select * from MyTable
where Value LIKE '[A-Z][A-Z][A-Z]001'

OR

select * from MyTable
where Value LIKE '[A-Z][A-Z][A-Z]' + RIGHT('000' + CONVERT(VARCHAR, @id), 3) 

答案 1 :(得分:1)

SELECT * FROM Table1 WHERE id LIKE '%001'

答案 2 :(得分:0)

如果您提供的每个ID都是3个字母的大写字母,后跟一个3位数的数字,那么Mitch Wheat给出的答案将有效。

rayman86给出的答案基本上无视前面的任何内容。它只查找以001结尾的任何内容。

如果ID的长度变化和/或前几个字符不是偶数字母,最好使用rayman86提供的代码。所以只需使用SELECT * FROM Table WHERE ID LIKE '%Numbers',其中Numbers是您的数值。

答案 3 :(得分:0)

对该问题的字面解释,不做任何假设:

创建此功能

create function dbo.numericonly(@s varchar(max))
returns float as
begin
declare @i int set @i = 1
while @i <= len(@s)
  if ascii(substring(@s,@i,1)) between 48 and 57
    set @i = @i + 1
  else
    set @s = stuff(@s,@i,1,'')
return @s
end
GO

使用此查询

Select * from table1 where dbo.numericonly(id) = '" & txtid & "'