Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
ЮЮ ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.038 c
6-1165509778
kernel
2006-12-07 19:42
2007.07.15
IdIcmpClient&exception


2-1182508445
_Asph
2007-06-22 14:34
2007.07.15
click по вложеным объектам


15-1181944338
Kostafey
2007-06-16 01:52
2007.07.15
С днем рождения ! 16 июня


3-1176758005
sergeii
2007-04-17 01:13
2007.07.15
SELECT с групировкой


2-1182151399
kukuikar
2007-06-18 11:23
2007.07.15
Как вставить форматированый текст и таблицы HTML из буфера в Word





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский