Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.15;
Скачать: CL | DM;

Вниз

Поис (без учитывания знаков и символов)   Найти похожие ветки 

 
ЮЮ ©   (2007-04-13 13:43) [40]

Повтори

while Pos("-", B)>0 do  Delete(B, Pos("-", B), 1);

столько раз, сколько нужно, чтобы учесть все нежелательные симворлы :)


 
ЮЮ ©   (2007-04-13 13:44) [41]

заменяя "-" на, например, "/", естественно


 
Johnmen ©   (2007-04-13 13:45) [42]


> такая замена не подойдет. так как под % будет понята любая
> комбинация. и будут лишние записи.

Ваши предложения.


 
Jan1   (2007-04-13 13:46) [43]


> Ваши предложения.

[33]


 
Jan1   (2007-04-13 13:47) [44]


> Jeeb   (13.04.07 13:34) [36]

нельзя вставлять %. будешь мусор получать.


 
Johnmen ©   (2007-04-13 13:55) [45]


> [33]

Выдрали. Дальше что?


 
Сергей М. ©   (2007-04-13 13:58) [46]

Удалено модератором
Примечание: завуалированный мат тоже мат


 
Jan1   (2007-04-13 14:11) [47]


> Выдрали. Дальше что?

далее исчем на прямое соответствие.


 
Johnmen ©   (2007-04-13 14:21) [48]


> далее исчем на прямое соответствие.

Т.е. предполагается, что все буквы-цифры мы знаем, причём в правильной последовательности?
А это разные изделия или нет abc-123 и ab-c123?


 
sniknik ©   (2007-04-13 14:25) [49]

> я бы написал простенькую UDF, которая выдерала-бы только числа и буквы.
практически тоже самое предлагалось в [2]

> ну как вариант
> select * from Table
> where replace(Field, "-", "") = SearchString or replace(Field, ",", "") = SearchString or
или, с небольшой поправкой
select * from Table
where replace(replace(Field,"-",""),",", "") = SearchString
в несколько вложений, заодно сработает если в одной строке несколько разнотипных разделителей...
дольше чем с LIKE из [1] там по первому символу индекс сработает, но наверное быстрее если в этот LIKE еще первым символом % поставить (а вдруг строка начинается знаком разделителя...)


 
sniknik ©   (2007-04-13 14:26) [50]

> А это разные изделия или нет abc-123 и ab-c123?
ну, судя по описанию в вопросе, это одно изделие


 
Jan1   (2007-04-13 14:28) [51]


> Т.е. предполагается, что все буквы-цифры мы знаем, причём
> в правильной последовательности?
> А это разные изделия или нет abc-123 и ab-c123?

судя по посту автора, нет - это одинаковые.


> практически тоже самое предлагалось в [2]

да, только проще. комбинации не надо будет перечислять.


 
sniknik ©   (2007-04-13 14:32) [52]

> комбинации не надо будет перечислять.
ты их будеш перечислять в UDF, плюс ее придется с собой таскать, плюс внешняя процедура в MSSQL несколько дольше "родной".

так что это еще вопрос что проще.


 
Jan1   (2007-04-13 15:05) [53]


> ты их будеш перечислять в UDF, плюс ее придется с собой
> таскать, плюс внешняя процедура в MSSQL несколько дольше
> "родной".

1. Давайте начнем с того, что [2] не будет правильно работать.
2. надо будет хранить символы которые надо исключить. хоть во временной таблице, хоть в статической.


 
Jan1   (2007-04-13 15:06) [54]

3. Одним запросом привоится поле к нужному виду: только буквы и цифры.


 
sniknik ©   (2007-04-13 15:49) [55]

> 1. Давайте начнем с того, что [2] не будет правильно работать
будет, с теми дополнениями/исправлениями что показаны в [49], а для частного случая (один тип разделителя)  и без этого.

> 2. надо будет хранить символы которые надо исключить. хоть во временной таблице, хоть в статической.
зачем? прямо в запросе и указывать, в [49] исключаются "-" и ",", продолжить цепочку для 10-15 символов, имхо, "легче" одной внешней процедуры.

> 3. Одним запросом привоится поле к нужному виду: только буквы и цифры.
да, и там и там, а если не видно разницы... то выбирается более простой способ (совет не для извращенцев).

еще + в пользу решения на сервере, можно сделать вычисляемое поле, по которому в принципе возможен и индекс... (от параметра какогото там зависит... не хочу искать)


 
Jan1   (2007-04-13 17:17) [56]


> зачем? прямо в запросе и указывать, в [49] исключаются "-
> " и ",", продолжить цепочку для 10-15 символов, имхо, "легче"
> одной внешней процедуры.

легче добавить нужный исключающий символ в таблицу чем, оборачивать 15 скобок. И читать потом легче и сопровождать.

use [pubs]
GO
if object_id("tbl_ExcludedToken") is null
create table [tbl_ExcludedToken] (
 [Token] char(1)
)
GO
if not object_id("GetValue") is null
drop function [GetValue]
GO
create function [GetValue] (@String varchar(250))
returns varchar(250)
as
begin
 declare @Result varchar(250)
 set @Result = @String
 select @Result = replace(@Result, [Token], "")
 from [tbl_ExcludedToken]
 return @Result
end
GO
insert into [tbl_ExcludedToken]
values("/")
GO
insert into [tbl_ExcludedToken]
values(",")
GO
insert into [tbl_ExcludedToken]
values("-")
GO
select [dbo].[GetValue]("A11434-55,66/33")
GO


 
ANB ©   (2007-04-14 09:25) [57]

Имхо - лучшее решение - дополнительное поле без мусора с индексом по нему.
А изврат с хитрыми лайками по любому вызовет фулл-скан, что не есть хорошо как для сервера, так и для юзера.



Страницы: 1 2 вся ветка

Текущий архив: 2007.07.15;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.017 c
2-1182606161
Полный Чайник
2007-06-23 17:42
2007.07.15
описание директивы Stdcall


15-1181625712
boriskb
2007-06-12 09:21
2007.07.15
Коллекция книг по компьютерной тематике,


2-1182164931
vima
2007-06-18 15:08
2007.07.15
Загрузка запроса из файла.


3-1176796774
DelphiLexx
2007-04-17 11:59
2007.07.15
DBGridEh + Footer + fvtSum


3-1176701592
X_ksandr_X
2007-04-16 09:33
2007.07.15
из StringGrid в Excel