Поиск по числовому значению - PullRequest
0 голосов
/ 27 февраля 2011

Использование Sql Server 2005

Table1

ID Value

ABC001
BCE002
...

У меня есть столбец поиска, при поиске идентификатора, например, «001», он отображается пустым, при поиске «ABC001» отображаются значения.

Запрос

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

txtid = текстовое поле

Я хочу найти только числовое значение в идентификаторе.

Как написать запрос для числового поиска.

Нужна помощь по запросу

Ответы [ 4 ]

3 голосов
/ 27 февраля 2011
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 голос
/ 27 февраля 2011
SELECT * FROM Table1 WHERE id LIKE '%001'
0 голосов
/ 27 февраля 2011

Буквальное толкование вопроса без каких-либо предположений:

Создать эту функцию

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 & "'
0 голосов
/ 27 февраля 2011

Ответ, данный Митчем Уитом, сработает, если каждый указанный вами идентификатор состоит из 3 букв в заглавных буквах, за которыми следует цифровое значение из 3 цифр.

Ответ, данный rayman86, по сути, не учитывает ничего на фронте. Он просто ищет все, что заканчивается на 001.

Если длина идентификатора варьируется и / или первые несколько символов не являются даже буквами, лучше использовать код, предоставленный rayman86. Поэтому просто используйте SELECT * FROM Table WHERE ID LIKE '%Numbers', где Numbers - это ваше числовое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...